Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用Take是否可以提高性能_C#_Linq_Linq To Entities - Fatal编程技术网

C# 使用Take是否可以提高性能

C# 使用Take是否可以提高性能,c#,linq,linq-to-entities,C#,Linq,Linq To Entities,如果我有一个LINQ to Entities查询返回一些结果,那么使用Take是否会提高性能?我的意思是因为在查询结束时,我们说的是.Take(thisManyRecords),然后它是否首先返回所有记录,然后返回给我thisManyRecords,或者它从一开始就将搜索限制在thisManyRecords LINQtoEntities意味着EF和一些获取查询的提供者 你不需要一袋袋的数据来检查。SQL分析器将显示所使用的SQL语句 如果应用。则将应用于IQueryable源。最终得到一个表达式

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

LINQtoEntities意味着EF和一些获取查询的提供者

你不需要一袋袋的数据来检查。SQL分析器将显示所使用的SQL语句

如果应用
。则将
应用于IQueryable源。最终得到一个表达式树,可以将其发送到db

Context.Set().Where(t=>?).OrderBy(t=>t.?).Take(n)

发送TOP(n)的结果

但是,如果强制枚举,例如.ToList()和did.Take(),则这适用于内存对象,不会发送到DB


我的数据库不够大,因此我可以亲自测试并感受差异。这在其他地方有很多介绍,您搜索过吗。。。例如,双向编写代码。双向运行代码。现在你知道哪一个更快了。@EricLippert好吧,除非你已经做了一些,如果你的数据库不够大,不能运行有意义的性能测试,那么就得到一个更大的数据库。