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