linq,计算计数

时间:2015-02-10 17:30:45

标签: c# linq

我试图弄清楚我是否有一个拥有自己的对象列表的对象列表,如何获得总计数。例如:

public class FileWrapper {
   List<File> Files
}

public class File {
   ...
}

因此,使用List包装器,如何获取文件总数。

wrappers.ForEach(f => f.Files.Count).Count()

3 个答案:

答案 0 :(得分:6)

您希望Sum每个列表的计数,而不是Count每个列表的计数:

var sum = wrappers.Sum(file => file.Files.Count);

答案 1 :(得分:0)

wrappers.Select(f => f.Files.Count).Sum()

答案 2 :(得分:0)

您也可以使用SelectMany

var sum = wrappers.SelectMany(wrapper => wrapper.Files).Count();

我无法访问VS.所以它是眼睛编译的。

就像@Servy所说,这是一个坏主意:

  

这会强制迭代每个内部列表以确定它   算一下,当他们能够归还已知的伯爵时。