从MultiDictionary获取所有密钥

时间:2016-08-11 10:05:54

标签: c# dictionary key

我正在寻找一种方法来获取multiDictionary的所有FIRST级别键并且我无法获得它们(用于调试目的)

我宣布这样的字典:

dataGridView.CellValueChanged += (e, sender) => {
// your handler logic
};

那么如何打印出所有基本键的列表呢?

我怎么能打印出二级键,因为我以后需要它......

提前感谢!

3 个答案:

答案 0 :(得分:2)

第一级,众所周知的方式:

var allKeys = PacketsStore.Keys;

子字典键,LINQ方式:

var allSubKeys = PacketsStore.SelectMany(pair => pair.Value.Keys);
OP已经在其他答案中评论说两个嵌套的foreach循环更适合于调试目的,但是,毕竟,如果OP想要将所有子键输出到控制台,它仍然可以用一个-liner解决方案:

// One-liner solution!
PacketsStore.SelectMany(pair => pair.Value.Keys).ToList().ForEach(Console.WriteLine);

答案 1 :(得分:1)

foreach(KeyValuePair<string, Dictionary<string, Packet>> entry in PacketsStore)
{
    string key = entry.Key; // first level
    foreach(KeyValuePair<string, Packet> entryInner in entry.Value)
    {
       string keyInner = entryInner.Key // second level
    }
}

我已经将键带入了变量,你可以将它们带入一些集合中。目的是得到钥匙:)

答案 2 :(得分:0)

对于所有键,请尝试:

var keys = PacketsStore.Keys.ToArray();

和二级密钥:

List<string> secondaryKeys;
foreach (var key in keys)
{
     secondaryKeys.AddRange(PacketStore[key].Keys.ToArray());
}