我有這行代碼在LINQ中使用Count()的最佳方式是什麼?
var count = materials.Where(i => i.MaterialType1 == MaterialType.Major).Count();
其中ReSharper的提示我改變
var count = materials.Count(i => i.MateriakType1 == MaterialType.Major);
爲什麼?任何人都能告訴我改變的好處是什麼?
我有這行代碼在LINQ中使用Count()的最佳方式是什麼?
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,那麼第二個將不會工作!這是因爲Count
帶謂詞的過載不是supported by LINQ to Entities。
我認爲這取決於你想如何使用它。 比方說你有一個查詢:
var query=materials.Where(i => i.MaterialType1 == MaterialType.Major);
var query2=query. ... sub query
var result=query. ... some operation
var result=query.Count() ;
如果你在考慮延遲執行寫那麼我寧願先寫查詢並相應地使用它(而不是使用貪心運營商如COUNT()),但正如我所說依賴在場景中。
好吧,顯而易見的答案是:這是一個函數調用,而不是兩個,它更短。 – Zruty
生成的SQL是相等的。 – Dannydust