我想从背后的 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);
}

最佳答案

第一个 - IQueryable<T>

返回 IEnumerable 会导致将所有匹配的元素从 DB 中提取到内存中,并将执行 SkipTake 作为 LINQ to object 查询。

关于c# - 我应该使用 IQueryable 或 IEnumerable 中的哪个不将行放入内存中?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18941434/

10-12 13:58