web-dev-qa-db-fra.com

Comment parcourir une SortedList en récupérant la clé et la valeur

Le code suivant parcourt une liste et récupère les valeurs, mais comment pourrais-je écrire une instruction similaire qui récupère les clés et les valeurs 

foreach (string value in list.Values)
{
    Console.WriteLine(value);
}

par exemple quelque chose comme ça

    foreach (string value in list.Values)
{
    Console.WriteLine(value);
        Console.WriteLine(list.key);
}

le code pour la liste est:

SortedList<string, string> list = new SortedList<string, string>();
15
Wayneio
foreach (KeyValuePair<string, string> kvp in list)
{
    Console.WriteLine(kvp.Value);
    Console.WriteLine(kvp.Key);
}

De msdn :

GetEnumerator renvoie un énumérateur de type KeyValuePair<TKey, TValue> qui effectue une itération via le SortedList<TKey, TValue>.

Comme Jon a déclaré, vous pouvez utiliser le mot clé var au lieu d'écrire le nom du type de la variable d'itération (le type sera déduit de l'utilisation):

foreach (var kvp in list)
{
    Console.WriteLine(kvp.Value);
    Console.WriteLine(kvp.Key);
}
29
Sergey Berezovskiy

Excuses ...

c'était un sujet incorrect (boucle entre les valeurs). Mon problème parcourait les paires de valeurs de clé, et pas seulement les valeurs . Laissera ceci ici s'il n'y a pas d'objections comme option possible pour obtenir des valeurs de la collection SortedList.

J'ai juste essayé de comprendre cette erreur également et ma solution consistait à utiliser le type DictionaryEntry pour remplacer le type KeyValuePair avec erreur . Trouvé dans la référence MS https://msdn.Microsoft.com/en -us/library/system.collections.dictionaryentry (v = vs.100) .aspx

Dans mon cas, le code créait une collection de types SortedList et ni les types var ni KeyValuePair ne fonctionnaient (var s'est égaré lors d'une tentative de lecture de la clé/valeur à partir de l'élément de la collection et le KeyValuePair s'est égaré dans la définition de boucle initiale. Les deux avec "Specified cast is not valid")

Voici donc un exemple de code qui a fonctionné pour moi:

SortedList _dims = GetList("mysortedlist");
foreach (DictionaryEntry kvp in _dims)
{
    Console.WriteLine(kvp.Key.ToString());
    Console.WriteLine(kvp.Value.ToString()); 
}

HTH

Dave

0
Dave