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

Cor*_*ian 5 c# linq

我有这行代码

var count = materials.Where(i => i.MaterialType1 == MaterialType.Major).Count(); 
Run Code Online (Sandbox Code Playgroud)

Resharper促使我改为

var count = materials.Count(i => i.MateriakType1 == MaterialType.Major); 
Run Code Online (Sandbox Code Playgroud)

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

Mar*_*zek 5

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

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

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