什么是LINQ'ish的方式来做到这一点

时间:2009-09-24 23:06:30

标签: c# linq

说,我有一系列列表,我想得到所有列表中所有项目的计数。如何使用LINQ计算计数? (这里只是一般的好奇心)

以下是旧方法:


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

你将如何LINQify? (c#语法,请)

3 个答案:

答案 0 :(得分:27)

使用Sum()方法:

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

答案 1 :(得分:12)

我更喜欢@ jrista的答案,但你可以做到

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

只是想展示SelectMany的用法,以防你想用集合集合做其他事情。

答案 2 :(得分:4)

如果你想要花哨

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

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