关于c#:foreach with word in dictionary


foreach with key in dictionary

如何循环具有特定键的字典值?

1
foreach(somedictionary<"thiskey", x>...?

/m


一个字典每个键只有一个值,所以不需要foreach…您可以检查是否存在(ContainsKeyTryGetValue):

1
2
3
4
SomeType value;
if(somedictionary.TryGetValue("thisKey", out value)) {
    Console.WriteLine(value);
}

如果SomeType实际上是一个列表,那么您当然可以这样做:

1
2
3
4
5
6
List<SomeOtherType> list;
if(somedictionary.TryGetValue("thisKey", out list)) {
    foreach(value in list) {
        Console.WriteLine(value);
    }
}

查找(ILookup中)每个键有多个值,并且只是:

1
2
3
foreach(var value in somedictionary["thisKey"]) {
    Console.WriteLine(value);
}

给定的键最多有一个值,因此foreach没有任何作用。也许你在考虑某种多重映射概念。我不知道.NET类库中是否存在这样的东西。


此扩展方法可能有助于遍历字典:

1
2
3
4
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);
}

假设你有一本这样声明的字典:var d = new Dictionary>();。您可以这样循环遍历给定键的列表值:

1
2
foreach(var s in d["yourkey"])
    //Do something