Convertir les valeurs du dictionnaire en tableau

Quel est le moyen le plus efficace de transformer la liste de valeurs d’un dictionnaire en un tableau?

Par exemple, si j’ai un DictionaryKey est Ssortingng et Value est Foo , je veux obtenir Foo[]

J’utilise VS 2005, C # 2.0

 // dict is Dictionary Foo[] foos = new Foo[dict.Count]; dict.Values.CopyTo(foos, 0); // or in C# 3.0: var foos = dict.Values.ToArray(); 

Stockez-le dans une liste. C’est plus facile;

 List arr = new List(dict.Values); 

Bien sûr, si vous le souhaitez spécifiquement dans un tableau;

 Foo[] arr = (new List(dict.Values)).ToArray(); 

Il y a une fonction ToArray () sur les valeurs:

 Foo[] arr = new Foo[dict.Count]; dict.Values.CopyTo(arr, 0); 

Mais je ne pense pas que ce soit efficace (je n’ai pas vraiment essayé, mais je suppose que cela copie toutes ces valeurs dans le tableau). Avez-vous vraiment besoin d’un tableau? Sinon, j’essaierais de passer IEnumerable:

 IEnumerable foos = dict.Values; 

Si vous souhaitez utiliser linq, vous pouvez essayer:

 Dictionary dict = new Dictionary(); var arr = dict.Select(z => z.Value).ToArray(); 

Je ne sais pas lequel est le plus rapide ou le meilleur. Les deux travaillent pour moi.

De nos jours, une fois LINQ disponible, vous pouvez convertir les clés du dictionnaire et leurs valeurs en une seule chaîne.

Vous pouvez utiliser le code suivant:

 // convert the dictionary to an array of ssortingngs ssortingng[] strArray = dict.Select(x => ("Key: " + x.Key + ", Value: " + x.Value)).ToArray(); // convert a ssortingng array to a single ssortingng ssortingng result = Ssortingng.Join(", ", strArray);