2009-09-24 57 views
10

說,我有一個列表數組,我想要列出所有列表中的所有項目。我如何計算LINQ的計數? (這裏只是一般的好奇心)什麼是LINQ'ish的做法

這裏是舊的方式做到這一點:

 

List<item>[] Lists = // (init the array of lists) 
int count = 0; 
foreach(List<item> list in Lists) 
    count+= list.Count; 
return count; 
 

你將如何LINQify是什麼? (C#語法,請)

回答

27

使用Sum()方法:

int summedCount = Lists.Sum(l => l.Count); 
+2

true LINQ將使用:var summedCount = ... – 2009-09-25 01:33:37

+7

@ Travis:根本不。除了使用匿名類型之外,Var在任何情況下都不是必需的。在所有其他情況下,開發人員都喜歡使用var或strong類型的「真實」linq,但對於所有意圖和目的而言,沒有實際的區別。 – jrista 2009-09-25 02:33:54

12

我喜歡@ jrista的回答比這更好的,但你可以做

int summedCount = Lists.SelectMany(x => x).Count(); 

只是想顯示的情況下的SelectMany使用你想用集合集合來做其他事情。

+2

描述SelectMany的好方法。 +1 – jrista 2009-09-24 23:13:57

4

如果你想成爲幻想

int summedCount = Lists.Aggregate(0, (acc,list) => acc + list.Count); 

但第一次的答案肯定是最好的。