2010-05-28 2 views
0

Je veux utiliser des éléments de dictionnaire comme je le fais dans la classe générique de liste, par exemple;La meilleure façon d'utiliser les éléments du dictionnaire que nous utilisons les avantages de la liste

foreach(item in ItemList) 
{ 
    item.BlaBla; 
} 

Mais dans le dictionnaire il s aucune chance, comme méthode ci-dessus e ...

Dictionary<string, HtmlInputImage> smartPenImageDictionary; 

Je veux dire que je suis arrivé à savoir l'élément clé pour l'élément dictionnaire .. mais ce que je veux, je voulez parcourir le début de la liste jusqu'à la fin.

Répondre

2

Je ne suis pas absolument sûr de ce que vous voulez réaliser, mais voici les choses courantes que vous pouvez faire avec un dictionnaire.

IDictionary<Int32, String> dictionary = new Dictionary<Int32, String>(); 

// Iterate over all key value pairs. 
foreach (KeyValuePair<Int32, String> keyValuePair in dictionary) 
{ 
    Int32 key = keyValuePair.Key; 
    String value = keyValuePair.Value; 
} 

// Iterate over all keys. 
foreach (Int32 key in dictionary.Keys) 
{ 
    // Get the value by key. 
    String value = dictionary[key]; 
} 

// Iterate over all values. 
foreach (String value in dictionary.Values) 
{ 
} 
+0

danke Daniel. ! – theklc

1

L'itération d'un dictionnaire entraîne KeyValuePair<> s. Accédez simplement aux membres Key et Value de la variable appropriée.

0

Un dictionnaire n'a pas de "début" et de "fin" - il n'est pas ordonné.

Cependant, vous pouvez itérer sur les touches ou les valeurs:

foreach (string key in smartPenImageDictionary.Keys) 
{ 
    ... 
} 

foreach (HtmlInputImage image in smartPenImageDictionary.Values) 
{ 
    ... 
} 

ou paires clé/valeur: (. Ou bien sûr var fait le dernier cas plutôt agréable)

foreach (KeyValuePair<string, HtmlInputImage> pair in smartPenImageDictionary) 
{ 
    string key = pair.Key; 
    HtmlInputImage image = pair.Value; 
    ... 
} 

1

Quelque chose comme ceci:

foreach (KeyValuePair<string, HtmlInputImage> kvp in smartPenImageDictionary) 
{ 
    Console.WriteLine("Value " + kvp.Value); 
} 
0

Je suppose que vous les voulez dans l'ordre, de la même manière qu'un IList<T> fournit. Pour autant que je sais qu'il n'y a aucun ordre garanti pour une Dictionary<Tkey,TValue>, vous aurez donc besoin de

mydictionary.ToList(); 

Cependant, comme vous ajoutez et supprimez des éléments, ou même appeler cela à nouveau, il peut changer. Une solution est d'écrire votre propre Collection qui a un indexeur personnalisé que vous pouvez utiliser.

Questions connexes