获取Array of Dictionary中的所有键

时间:2018-05-02 11:23:40

标签: c# .net linq dictionary

我有一系列词典如下:

Dictionary<int, int>[] matrix = new Dictionary<int, string>[10];

我需要保存在此词典中的所有密钥,我在foreach循环中使用如下:

 foreach (int key in matrix.Keys)
  {

  }

显然,matrix.Keys在这里不起作用。那么,有没有办法获得字典的所有键而不循环遍历整个数组(可能是Linq或其他东西)?

4 个答案:

答案 0 :(得分:5)

使用LINQ&#39; SelectMany

var keys = matrix.SelectMany(x => x.Keys);

答案 1 :(得分:4)

假设您的结果应该是一个键列表,您可以使用vhstatus

SelectMany()

https://dotnetfiddle.net/LgIwr7

答案 2 :(得分:4)

 var allKeys = matrix.SelectMany(d => d.Keys);

 foreach (int key in allKeys) ...

答案 3 :(得分:1)

为了得到数组中所有字典的所有值的总和,我建议:

var total = matrix.SelectMany(z => z).Sum(z => z.Value);

或:

var total = matrix.SelectMany(z => z.Values).Sum(z => z);

没有必要获得Keys,因为您真正感兴趣的是Values