Jaki jest najlepszy sposób na iterację po słowniku?

Jaki jest najlepszy sposób na iterację po słowniku?
foreach(KeyValuePair<string, string> entry in myDictionary)
{
    // do something with entry.Value or entry.Key
}

Jeśli próbujesz użyć ogólnego słownika w C#, tak jak używasz tablicy asocjacyjnej w innym języku:

foreach(var item in myDictionary)
{
  foo(item.Key);
  bar(item.Value);
}

Lub, jeśli potrzebujesz tylko iterować po kolekcji kluczy, użyj

foreach(var item in myDictionary.Keys)
{
  foo(item);
}

I na koniec, jeśli interesują Cię tylko wartości:

foreach(var item in myDictionary.Values)
{
  foo(item);
}

(Zwróć uwagę, że var słowo kluczowe jest opcjonalną funkcją C# 3.0 i nowszą, możesz również użyć dokładnego typu kluczy/wartości tutaj)


W niektórych przypadkach możesz potrzebować licznika, który może być dostarczony przez implementację pętli for-loop. W tym celu LINQ zapewnia ElementAt co umożliwia:

for (int index = 0; index < dictionary.Count; index++) {
  var item = dictionary.ElementAt(index);
  var itemKey = item.Key;
  var itemValue = item.Value;
}