我有这行代码
var count = materials.Where(i => i.MaterialType1 == MaterialType.Major).Count();
Resharper提示我改为
var count = materials.Count(i => i.MateriakType1 == MaterialType.Major);
为什么呢?任何人都可以告诉我改变的好处是什么?
答案 0 :(得分:5)
如果总是更糟,我不会说第二个。这取决于背景。
对于LINQ to Objects,最好使用第二个,因为假设更快。我没有测试过,所以这只是我的猜测。
但是,要小心这样的更改,因为它们并不总是等效的。例如。如果你使用LINQ to Entities,那么第二个就根本不起作用!这是因为带谓词的Count
重载不是supported by LINQ to Entities。
答案 1 :(得分:2)
我认为这取决于你想如何使用它。 假设您有疑问:
var query=materials.Where(i => i.MaterialType1 == MaterialType.Major);
var query2=query. ... sub query
var result=query. ... some operation
var result=query.Count() ;
如果你用延迟执行编写,那么我更愿意首先编写查询并相应地使用它(而不是使用像Count()这样的贪婪运算符),但正如我所说,取决于场景。