我应该使用哪个IQueryable或IEnumerable来不将行放入内存?

时间:2013-09-22 07:30:36

标签: c# entity-framework linq-to-entities

我希望从我的 aspx 代码中的class中获取上下文中的数据,如下所示:

MyClass.GetIt().Skip((page - 1) * perPage).Take(perPage);

但我不知道在我的分页中我应该使用哪种方法而不是所有内存都放在内存中?

1

public static IQueryable<T> GetIt()
{
     return context.MyObject.Where(i=>i.Type==1);
} 

2

public static IEnumerable<T> GetIt()
{
     return context.MyObject.Where(i=>i.Type==1);
} 

1 个答案:

答案 0 :(得分:2)

第一个 - IQueryable<T>

返回IEnumerable会导致将DB中的所有匹配元素带入内存,并将SkipTake作为LINQ来执行对象查询。