¿Cómo iterar sobre un diccionario?

Resuelto Jake Stewart asked hace 16 años • 20 respuestas

He visto algunas formas diferentes de iterar sobre un diccionario en C#. ¿Existe una forma estándar?

Jake Stewart avatar Sep 27 '08 01:09 Jake Stewart
Aceptado
foreach(KeyValuePair<string, string> entry in myDictionary)
{
    // do something with entry.Value or entry.Key
}
Pablo Fernandez avatar Sep 26 '2008 18:09 Pablo Fernandez

Si está intentando utilizar un diccionario genérico en C# como lo haría con una matriz asociativa en otro idioma:

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

O, si solo necesita iterar sobre la colección de claves, use

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

Y por último, si solo te interesan los valores:

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

(Tenga en cuenta que la varpalabra clave es una característica opcional de C# 3.0 y superior; también puede usar el tipo exacto de sus claves/valores aquí)

Jacob avatar Sep 26 '2008 18:09 Jacob

En algunos casos, es posible que necesite un contador que pueda proporcionarse mediante la implementación del bucle for. Para eso, LINQ proporciona ElementAtlo que permite lo siguiente:

for (int index = 0; index < dictionary.Count; index++) {
  var item = dictionary.ElementAt(index);
  var itemKey = item.Key;
  var itemValue = item.Value;
}
Maurício Fedatto avatar Mar 10 '2011 20:03 Maurício Fedatto