2009-01-23 8 views
1

j'ai un objet dictionnaire:Tri un objet dictionnaire

Dictionary<string, string[]> dictCompanies = new Dictionary<string, string[]>(); 

Comment cet objet ne trier sur sa clé?

J'ai essayé d'utiliser OrderBy comme ci-dessous, mais il ne semble pas travailler

dictCompanies .OrderByDescending(c=> c.Key); 

Je lier cet objet à un dictionnaire CheckBoxList dans la page ASPX.

J'ai essayé ce tri ListItemCollection utilisant délégué ... mais toujours pas de chance ...

Suis-je manque quelque chose?

Merci

+0

Pourquoi n'utilisez-vous pas une liste triée? –

Répondre

11

Vous ne pouvez pas trier une Dictionary<TKey,TValue> réelle - les éléments pour sortir de celui-ci est essentiellement déterminée par la mise en œuvre interne. Cependant, vous pourriez vouloir regarder SortedDictionary<TKey,TValue> et SortedList<TKey,TValue> cependant - ils ont toujours des recherches de clé/valeur, mais vous permettent de trier basé sur la clé. Vous pouvez spécifier votre propre IComparer<T> si vous voulez commander par les touches d'une manière particulière.

Une autre option (en fonction de votre situation) consisterait à coller avec le dictionnaire jusqu'à ce que vous en ayez besoin - puis de le copier dans une liste et de le trier avant de vous lier au contrôle. Évidemment, à ce moment-là, vous devriez rafraîchir la reliure chaque fois que quelque chose a changé, mais cela pourrait ne pas poser de problème pour vous. Soit dit en passant, si votre ordre OrderBy était vraiment tout seul, vous devez comprendre que les opérateurs LINQ toujours les opérateurs prennent toujours une séquence et retournent une séquence différente (ou un résultat agrégé) - ils ne modifient jamais la séquence en place. En effet, ils ne peuvent pas car IEnumerable<T> est une interface en lecture seule.

1

Jetez un oeil à SortedDictionary et SortedList.

deux ont O (log n) la récupération, la différence principale est en cours d'utilisation de la mémoire et la vitesse d'insertion et de retrait:

  • SortedList utilise moins de mémoire que SortedDictionary.
  • SortedDictionary a des opérations d'insertion et de suppression plus rapides pour les données non triées: O (log n) par opposition à O (n) pour SortedList.
Questions connexes