我正在寻找一种方法来获取multiDictionary的所有FIRST级别键并且我无法获得它们(用于调试目的)
我宣布这样的字典:
dataGridView.CellValueChanged += (e, sender) => {
// your handler logic
};
那么如何打印出所有基本键的列表呢?
我怎么能打印出二级键,因为我以后需要它......
提前感谢!
答案 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());
}