一尘不染

您如何按值对字典排序?

c#

我经常必须按值对由键和值组成的字典进行排序。例如,我有一个单词和各个频率的哈希,我想按频率排序。

SortedList我想将其映射回单词,这对于单个值(例如频率)来说是一个很好的选择。

SortedDictionary订单按键而非值排序。有些使用自定义类,但是有没有更干净的方法?


阅读 299

收藏
2020-05-19

共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));
2020-05-19