IQueryable不包含ToList()

时间:2016-06-13 15:20:22

标签: c# linq

我的视图模型是IEnumerable<SomeModel>所以在我的控制器中我这样做:

[HttpGet]
public PartialViewResult show() {
    IQueryable query= from data in entity.dbCtxt
        select data;
    return PartialView("show", query.ToList());
}

结果IQueryable不包含ToList() ...

的定义
public interface IQueryable : IEnumerable{
     Type ElementType { get; }
     Expression Expression { get; }
     IQueryProvider Provider { get; }
}

如何将IQueryable投射到列表中?

2 个答案:

答案 0 :(得分:4)

因为ToListIQueryable<T>的扩展方法,而不是IQueryable。如果这是您的查询,您可以简单地执行此操作:

public PartialViewResult show() {

        return PartialView("show", dbCtxt.YourDbSet.ToList());
}

DbSet<T>类继承自IQueryable<T>,因此,如果您想要获取该表的所有行,则可以直接从ToList调用DbSet

答案 1 :(得分:2)

不确定为什么你需要它Iqueryable,但你可以这样做,因为select将返回IEnumerable<T>,你可以在{/ 1}上调用ToList() >

        var query = from data in entity.dbCtxt
                   select data;
        return PartialView("show", query.ToList());