C# 在字典中输入关键字的foreach
如何循环具有特定键的字典值C# 在字典中输入关键字的foreach,c#,C#,如何循环具有特定键的字典值 foreach(somedictionary<"thiskey", x>...? foreach(somedictionary。。。? /M给定的键最多有一个值,因此foreach没有任何作用。也许您正在考虑某种多重映射的概念。我不知道.Net类库中是否存在这样的东西。只有一个字典每个键有一个值,因此不需要foreach…您可以检查一下我是否是否存在(ContainsKey或TryGetValue): 如果SomeType实际上是一个列表,那么您当然可
foreach(somedictionary<"thiskey", x>...?
foreach(somedictionary。。。?
/M给定的键最多有一个值,因此
foreach
没有任何作用。也许您正在考虑某种多重映射的概念。我不知道.Net类库中是否存在这样的东西。只有一个字典每个键有一个值,因此不需要foreach…您可以检查一下我是否是否存在(ContainsKey
或TryGetValue
):
如果SomeType
实际上是一个列表,那么您当然可以:
List<SomeOtherType> list;
if(somedictionary.TryGetValue("thisKey", out list)) {
foreach(value in list) {
Console.WriteLine(value);
}
}
假设您有一个这样声明的字典:
var d=new dictionary();
。您可以像这样循环给定键的列表值:
foreach(var s in d["yourkey"])
//Do something
此扩展方法可能有助于遍历字典:
public static void ForEach<TKey, TValue>(this Dictionary<TKey, TValue> source, Action<KeyValuePair<TKey, TValue>> action) {
foreach (KeyValuePair<TKey, TValue> item in source)
action(item);
}
publicstaticvoidforeach(此字典源,操作){
foreach(源中的KeyValuePair项)
行动(项目);
}
一个字典每个键只有一个值,因此不需要foreach…如果需要在键上迭代,您可以看看这个答案。multimap=ILookup
,最常见的是从可枚举的具体查找。ToLookup
我应该在某些列表上使用linq吗?但该值可以是一个列表。@klausby斯科夫:那么你只需要在一个列表上迭代,而它来自一本字典这一事实将是相当无趣的。没错,但你永远不会知道这些问题。
foreach(var s in d["yourkey"])
//Do something
public static void ForEach<TKey, TValue>(this Dictionary<TKey, TValue> source, Action<KeyValuePair<TKey, TValue>> action) {
foreach (KeyValuePair<TKey, TValue> item in source)
action(item);
}