2011-03-03 7 views
24

Je vérifie pour voir si nous avons un moyen de retourner toutes les clés de tableau sans utiliser le pour chaque boucle (il n'y a pas de contrainte pour moi d'utiliser pour chaque boucle, je suis à la recherche est-il une autre façon)Comment obtenir toutes les clés (uniquement des clés) de l'objet dictionnaire sans passer par chaque boucle

Merci à l'avance

+2

voir la suite [how-to-get-the-list-of-key-in-dictionary-c-sharp] (http://stackoverflow.com/questions/1276763/how-to-get-the-list -d-key-in-dictionary-c-sharp? rq = 1) – nawfal

Répondre

55

Je ne suis pas certain de votre libellé si vous voulez que les clés ou les valeurs. De toute façon, c'est assez simple. Utilisez la propriété Keys ou Values du dictionnaire et la méthode d'extension ToArray.

var arrayOfAllKeys = yourDictionary.Keys.ToArray(); 

var arrayOfAllValues = yourDictionary.Values.ToArray(); 
+0

hm ... Cela ne fonctionne pas pour moi - System.Collections.Generic.Dictionary .KeyCollection 'ne contient pas de définition pour 'ToArray' et aucune méthode d'extension 'ToArray' acceptant un premier argument de type 'System.Collections.Generic.Dictionary .KeyCollection' pourrait être trouvé (manque-t-il une directive using ou une référence d'assembly?) –

+5

@Chiz: 'ToArray' est une méthode d'extension LINQ. Vous aurez donc besoin d'une directive' using System.Linq; 'en haut de votre code. – LukeH

1
string[] myKeys; 
myKeys = myDictionary.Keys.ToArray(); 

Untested, mais je ne vois pas pourquoi cela fonctionnerait.

+0

Ce code: 'var arrayOfAllKeys = yourDictionary.Keys.ToArray();' Publié par LukeH est mieux, parce que ce code est de moins en moins compréhensible. et valeur accessible via le code: 'arrayOfAllKeys. [0] .ToString();' merci. –

3

Vous voulez les clés ou les valeurs?

Les touches que vous pouvez obtenir comme ceci:

dictionary.Keys.ToArray(); 

Les valeurs que vous pouvez obtenir comme celui-ci;

dictionary.Values.ToArray(); 

Cette méthode ToArray provient de System.Linq.Enumerable.

Questions connexes