2017-02-10 125 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()