使用Take可以改善性能吗?

时间:2013-12-18 15:15:14

标签: c# linq linq-to-entities

如果我有LINQ to Entities查询返回一些结果,那么使用Take是否可以提高性能?我的意思是因为在查询结束时我们说.Take(thisManyRecords)然后它首先返回所有记录然后只返回给我thisManyRecords或者它真的从开始将其搜索限制为thisManyRecords }?

1 个答案:

答案 0 :(得分:1)

Linq to entities意味着EF和一些获取查询的提供者。

您不需要检查数据包。 SQL事件探查器将显示使用的SQL语句。

如果您将.Take应用于IQueryable来源。最终得到一个表达式树,这可以发送到db;

Context.Set()。其中​​(t => ??)。OrderBy(t => t。??)。Take(n);

导致TOP(n)被发送。

如果您强制枚举,例如.ToList()和did .Take(),那么这适用于内存对象而不会发送到DB。

Query Execution in EF explained