¿Cómo iterar sobre un diccionario?
He visto algunas formas diferentes de iterar sobre un diccionario en C#. ¿Existe una forma estándar?
Aceptado
foreach(KeyValuePair<string, string> entry in myDictionary)
{
// do something with entry.Value or entry.Key
}
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 var
palabra clave es una característica opcional de C# 3.0 y superior; también puede usar el tipo exacto de sus claves/valores aquí)
En algunos casos, es posible que necesite un contador que pueda proporcionarse mediante la implementación del bucle for. Para eso, LINQ proporciona ElementAt
lo 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;
}