小编典典

如何按值对字典进行排序?

all

我经常需要按值对字典(由键和值组成)进行排序。例如,我有一个单词哈希和我想按频率排序的相应频率。

有一个SortedList对单个值(比如频率)有好处的,我想映射回这个词。

SortedDictionary按键排序,而不是按值排序。有些人求助于自定义类,但有更清洁的方法吗?


阅读 129

收藏
2022-03-01

共1个答案

小编典典

采用:

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);
    }
);

由于您的目标是 .NET 2.0 或更高版本,因此您可以将其简化为 lambda 语法——它是等效的,但更短。如果您的目标是 .NET 2.0,则只能在使用
Visual Studio 2008(或更高版本)的编译器时使用此语法。

var myList = aDictionary.ToList();

myList.Sort((pair1,pair2) => pair1.Value.CompareTo(pair2.Value));
2022-03-01