2009-08-10 171 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>(); 
相关问题