2010-12-08 47 views
2

Quel est le meilleur moyen (*) pour obtenir les clés d'un Dictionary<string, object> dans un string[] (triées par ordre alphabétique)?Comment obtenir les clés d'un Dictionary <string, object> dans une chaîne triée []

Exemple:

var d = new Dictionary<string, int>(); 
d.Add("b", 1); 
d.Add("f", 2); 
d.Add("a", 3); 

string[] sortedKeys = ...; 
// sortedKeys should contain ["a", "b", "f"] 

(*) ce que je veux dire par « meilleure façon » est probablement: il devrait être facile à lire et écrire, mais doit encore donner lieu à de bonnes performances

Répondre

5

Il dépend ce que vous entendez par « meilleur » - mais j'utiliser:

string[] sortedKeys = d.Keys.OrderBy(x => x).ToArray(); 

Un peu plus efficace mais moins couramment:

string[] sortedKeys = d.Keys.ToArray(); 
Array.Sort(sortedKeys); 
+0

Merci beaucoup! Je luttais avec la méthode 'OrderBy()' – M4N

+0

Il y a aussi la syntaxe plus LINQy: '(à partir de k dans d.Keys orderby k sélectionnez k) .ToArray()' si vous avez des problèmes avec 'OrderBy()'. – Gabe

+0

@Gabe: Vrai - bien que je conseillerais aux gens d'apprendre les deux formes ... ici, l'expression de la requête est seulement l'ajout de bruit par rapport à la forme de la méthode d'extension, IMO. –