【发布时间】:2014-11-03 10:32:56
【问题描述】:
我有:
IQueryable<Entity> query = (from e in Context.Set<TEntity>() select e);
IEnumerable<TEntity> result = query.OrderBy(x=>x.Property).Skip(10).Take(10);
OrderBy/Skip/Take 返回IEnumerable<T>。我担心会发生什么,所有的结果都会被返回,然后Linq会被用来只取其中的一部分。
我的问题是:OrderBy/Skip 和 Take 是否包含在发出的 SQL 查询中,以便只返回总结果的请求子集?
【问题讨论】:
-
您是否在监控 SQL Server 时尝试过? Some insights here.
-
IQueryable 被编译为 sql。所以,是的,只返回总结果的请求子集
-
作为一个附带主题,我建议您阅读有关延迟执行的内容。 blogs.msdn.com/b/charlie/archive/2007/12/09/…
-
我会做一些阅读,我急需这个答案。非常感谢大家的回答和cmets。选择哪一个作为答案..?
标签: c# linq entity-framework