Comment trier un dictionnaire par valeur ?

Je dois souvent trier un dictionnaire composé de clés

请先 登录 后评论

4 réponses

Kalid

Regarder autour de soi et utiliser du C

请先 登录 后评论
Leon Bambrick

Utiliser :

using System.Linq.Enumerable;
...
List<KeyValuePair<string, string>> myList = aDictionary.ToList();

myList.Sort(
    delegate(KeyValuePair<string, string> pair1,
    KeyValuePair<string, string> pair2)
    {
        return pair1.Value.CompareTo(pair2.Value);
    }
);

Puisque vous ciblez .NET 2.0 ou supérieur, vous pouvez le simplifier en syntaxe lambda -- c'est équivalent, mais plus court. Si vous ciblez .NET 2.0, vous ne pouvez utiliser cette syntaxe que si vous utilisez le compilateur de Visual

请先 登录 后评论
Roger Willcocks

De toute façon, vous ne pourrez jamais trier un dictionnaire. Ils ne sont pas réellement commandés. Les garanties d'un dictionnaire sont que les collections de clés et de valeurs sont itérables et que les valeurs peuvent être récupérées par index ou clé, mais il n'y a aucune garantie d'ordre particulier. Par conséquent, vous devrez obtenir la paire nom-valeur dans une liste.

请先 登录 后评论
Sean
var ordered = dict.OrderBy(x => x.Value);
请先 登录 后评论
  • 4 abonnés
  • 0 favoris,475 Feuilleter
  • Kalid posée à 2022-12-10 07:43