繁体   English   中英

在LINQ中使用Count()的最佳方法?

[英]Best way to use Count() in LINQ?

我有这行代码

var count = materials.Where(i => i.MaterialType1 == MaterialType.Major).Count(); 

Resharper促使我改为

var count = materials.Count(i => i.MateriakType1 == MaterialType.Major); 

为什么? 任何人都可以告诉我改变的好处是什么?

如果总是更糟,我不会说第二个。 这取决于背景。

对于LINQ to Objects,最好使用第二个,因为它假设更快。 我没有测试过,所以这只是我的猜测。

但是,要小心这样的更改,因为它们并不总是等效的。 例如,如果你使用LINQ to Entities,那么第二个就根本不起作用! 这是因为LINQ to Entities支持带谓词的Count重载。

我认为这取决于你想如何使用它。 让我们说你有一个问题:

var query=materials.Where(i => i.MaterialType1 == MaterialType.Major);
var query2=query.  ... sub query
var result=query.   ... some operation
var result=query.Count() ;

如果你用延迟执行编写,那么我更愿意首先编写查询并相应地使用它(而不是使用像Count()那样的贪婪运算符),但正如我所说,取决于场景。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM