2013-10-21 47 views
5

我有這行代碼在LINQ中使用Count()的最佳方式是什麼?

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

其中ReSharper的提示我改變

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

爲什麼?任何人都能告訴我改變的好處是什麼?

+8

好吧,顯而易見的答案是:這是一個函數調用,而不是兩個,它更短。 – Zruty

+0

生成的SQL是相等的。 – Dannydust

回答

5

我不會說第二個,如果總是更糟。這取決於上下文。

對於LINQ to Objects,最好使用第二個,因爲假設要更快。我沒有測試,所以這只是我的猜測。

但是,要小心這樣的變化,因爲它們並不總是等價的。例如。如果你使用LINQ to Entities,那麼第二個將不會工作!這是因爲Count帶謂詞的過載不是supported by LINQ to Entities

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()),但正如我所說依賴在場景中。

相關問題