我有一系列词典如下:
Dictionary<int, int>[] matrix = new Dictionary<int, string>[10];
我需要保存在此词典中的所有密钥,我在foreach
循环中使用如下:
foreach (int key in matrix.Keys)
{
}
显然,matrix.Keys
在这里不起作用。那么,有没有办法获得字典的所有键而不循环遍历整个数组(可能是Linq
或其他东西)?
答案 0 :(得分:5)
使用LINQ&#39; SelectMany
:
var keys = matrix.SelectMany(x => x.Keys);
答案 1 :(得分:4)
答案 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
。