C# 获取嵌套字典中的值之和

C# 获取嵌套字典中的值之和,c#,linq,C#,Linq,我的字典结构如下: Dictionary<string, Dictionary<int, double>> temp = new Dictionary<string, Dictionary<int, double>>(); 字典温度= 新字典(); 我想用LINQ计算temp中所有双精度值的总和。我试图获取字典列表list res=temp.Values.Sel

我的字典结构如下:

Dictionary<string, Dictionary<int, double>> temp = 
                                         new Dictionary<string, Dictionary<int, double>>();
字典温度=
新字典();

我想用LINQ计算
temp
中所有双精度值的总和。我试图获取字典列表
list res=temp.Values.Select(s=>s.ToList()但不知道如何继续进行此操作。

无需展平-您只需从内部字典获取值的总和:

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

无需展平-您只需从内部字典获取值之和:

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

可以使用SelectMany展平嵌套列表


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

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


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

同意,这看起来比我的构造更好。太棒了!你跑得很快。@Sergey还有,我想做的是
var total=temp.Values.Select(d=>d.Values.Sum())
你能告诉我为什么这不能给我预期的结果吗?@raksmens你把外部字典(即每个内部字典)的每个值都投影到内部字典值的总和(即双倍值)。这种投影的结果是内部和的
IEnumerable
-序列。你错过了这个序列的总和。您可以将
.Sum()
添加到查询的末尾,并获得相同的结果gree,这看起来比我的构造更好。太好了!你跑得很快。@Sergey还有,我想做的是
var total=temp.Values.Select(d=>d.Values.Sum())
你能告诉我为什么这不能给我预期的结果吗?@raksmens你把外部字典(即每个内部字典)的每个值都投影到内部字典值的总和(即双倍值)。这种投影的结果是内部和的
IEnumerable
-序列。你错过了这个序列的总和。您可以将
.Sum()
添加到查询的末尾,并获得相同的结果如何:var results=temp.Select(x=>new{key=x.key,Sum=x.Value.Select(y=>y.Value.Sum())).ToList();这个怎么样:var results=temp.Select(x=>new{key=x.key,sum=x.Value.Select(y=>y.Value.sum())).ToList();