2015-02-10 64 views
1

我想弄清楚,如果我有一个对象的列表有自己的对象列表,如何获得总数。例如:linq,计算计数的计数

public class FileWrapper { 
    List<File> Files 
} 

public class File { 
    ... 
} 

因此,如果使用List包装器,我如何获得文件的总数。

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

回答

6

你想Sum每个列表的数量,每个列表的不Count计数:

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

您还可以使用SelectMany

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

我没有访问VS.所以它是眼睛编译的。

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

这迫使每一个内部列表进行迭代,以确定其 计数,当他们能够返回刚才已经知名的伯爵。

+0

这会强制每一个内部列表迭代以确定它的计数,当它们能够返回已知的Count时。 – Servy 2015-02-10 17:41:17

+0

你是对的,我留下我的答案在这里作为信息的目的。 – Orace 2015-02-10 17:57:56