我经常需要按值对字典(由键和值组成)进行排序。例如,我有一个单词哈希和我想按频率排序的相应频率。
有一个SortedList对单个值(比如频率)有好处的,我想映射回这个词。
SortedList
SortedDictionary按键排序,而不是按值排序。有些人求助于自定义类,但有更清洁的方法吗?
采用:
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));