2009-08-10 136 views
13

剛剛學習LINQ,我在我的測試項目中遇到了一個新手路障。你能解釋我做錯了什麼嗎?如何將IQueryable <T>轉換爲列表<T>?

public List<ToDoListInfo> retrieveLists(int UserID) 
{ 
//Integrate userid specification later - need to add listUser table first 
IQueryable<ToDoListInfo> lists = 
    from l in db.ToDoLists 
    select new ToDoListInfo { 
     ListID = l.ListID, 
     ListName = l.ListName, 
     Order = l.Order, 
     Completed = l.Completed 
    }; 

    return lists.ToList<ToDoListInfo>; 
}  

我收到一個錯誤說以下內容:

Cannont轉換方法組「ToList」非委託類型 「System.Collections.Generic.List」你打算 調用方法?

+1

線索是 「你打算調用的方法?」 – 2009-08-15 11:49:07

回答

27

你只需要括號:

lists.ToList<ToDoListInfo>();

而且,你不必聲明類型參數,即您可以使用下面,讓類型系統推斷出類型參數:

lists.ToList();

+1

在這裏聲明類型名稱參數可能實際上是一個*壞*的事情,因爲您必須匹配'lists''IEnumerable '實現的類型參數,這可能會導致編譯時錯誤;最好讓[type-in​​ference](http://geekswithblogs.net/sdorman/archive/2007/04/06/111034.aspx)做它的工作 – casperOne 2011-11-10 14:24:52

+0

如果我想將iqueryble集合轉換爲不同類型的列表?例如,假設我有兩個類A和B,簽名幾乎相似。現在我從A檢索數據並且想要製作B類型的清單,我該怎麼做? – 2013-11-19 04:30:05

4

你只是缺少ToList收盤括號,應該是:

ToList(); 

ToList<ToDoListInfo>(); 
相關問題