Quel est le moyen le plus efficace de transformer la liste de valeurs d'un dictionnaire en tableau?
Par exemple, si j'ai un Dictionary
où Key
est String
et Value
est Foo
, je veux obtenir Foo[]
J'utilise VS 2005, C # 2.0
// dict is Dictionary<string, Foo>
Foo[] foos = new Foo[dict.Count];
dict.Values.CopyTo(foos, 0);
// or in C# 3.0:
var foos = dict.Values.ToArray();
Rangez-le dans une liste. C'est plus facile;
List<Foo> arr = new List<Foo>(dict.Values);
Bien sûr, si vous le voulez spécifiquement dans un tableau;
Foo[] arr = (new List<Foo>(dict.Values)).ToArray();
Il existe 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 qu'il copie toutes ces valeurs dans le tableau). Avez-vous vraiment besoin d'un tableau? Sinon, j'essaierais de passer IEnumerable:
IEnumerable<Foo> foos = dict.Values;
Si vous souhaitez utiliser linq, essayez donc de suivre:
Dictionary<string, object> dict = new Dictionary<string, object>();
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.
Ces jours-ci, une fois que LINQ est 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 strings
string[] strArray = dict.Select(x => ("Key: " + x.Key + ", Value: " + x.Value)).ToArray();
// convert a string array to a single string
string result = String.Join(", ", strArray);