使用LINQ to Entity而不将所有行放入内存

Maj*_*jid 3 c# linq entity-framework

我使用这种方法从EF获取每一页数据:

public IEnumerable<MyObj> GetByPage(int page, int perPage)
{
    return context.MyObj.Skip((page - 1) * perPage).Take(perPage);
}
Run Code Online (Sandbox Code Playgroud)

我想知道,这将获取的代码的所有行MyObj的内存和存储,然后将SkipTake或全部上面的代码将转换为SQL命令?

如果所有第一将存储在内存中,我如何使用LINQ到实体不使用的内存SkipTake

hai*_*770 7

只要你不物化查询(即调用ToList()/ ToArray()等,或迭代它),你SkipTake方法将被翻译由LINQ to SQL中,以实体提供商是实体框架的一部分.

所以回答你的问题:不,它不会获取所有数据并将其加载到内存中.

有关完整说明,请参阅此MSDN文章.