2017-02-10 128 views
1

我有这样一个字典结构:获取值的总和嵌套字典

Dictionary<string, Dictionary<int, double>> temp = 
             new Dictionary<string, Dictionary<int, double>>(); 

我想使用LINQ来计算temp所有双值的总和。我试图获得字典清单List<Dictionary<int, double>> res = temp.Values.Select(s => s).ToList();,但不知道如何前进与此。

+0

这个怎么样:var results = temp.Select(x => new {key = x.Key,sum = x.Value.Select y => y.Value).Sum()})。ToList(); – jdweng

回答

8

没有必要扁平化 - 你可以简单地得到总和从内部字典值的总和:

var total = temp.Values.Sum(d => d.Values.Sum()); 
+3

同意,这看起来比我的建设更好。 –

+0

太棒了!你很快。 – Sajeetharan

+0

@Sergey另外,我想要做的是'var total = temp.Values.Select(d => d.Values.Sum());'你能告诉我为什么这不会给我预期的结果吗? – RaksMen

0

您可以使用到的SelectMany展平嵌套列表

temp.Values。 SelectMany(dict => dict.Values.ToList())。Sum()