本文转载自微信公众号《NET技术问答》,作者:Stackoverflow。转载本文请联系NET技术问答公众号。咨询区Kalid:我需要对字典中的values进行排序,字典是由key和value组成的。比如:我有一个词的hashpair和对应的词频,现在想把词按照词频排序。我想用SortList来实现,但是只能实现单值排序,比如存储频率,但是这样我还需要用它来找词,好像很难实现,里面有个SortDictionary.NETframework,我发现它只能根据key排序,如果你想硬实现它,你必须定义一些自定义类。有没有更简洁的方法来实现它?解答区Cardden:如果要讲一个简洁的方法,可以用Linq来实现。参考如下代码:DictionarymyDict=newDictionary();myDict.Add("one",1);myDict.Add("four",4);myDict.Add("二",2);myDict.Add("三",3);varsortedDict=fromentryinmyDictororderbyentry.Valueascendingselectentry;varsortedDict=fromentryinmyDictorderbyentry.Valueascendingselectentry;其实使用Linq可以给我们很大的灵活性,它可以得到top10,top20,top10%等等。MichaelStum:如果从抽象的角度来看,除了将字典作为一个整体来检查每个项目之外,没有其他方法。我的做法是把字典转成List,然后用内置的Sort方法排序。参考如下代码:Dictionarys=newDictionary();s.Add("1","aItem");s.Add("2","cItem");s.Add("3","bItem");List>myList=newList>(s);myList.Sort(delegate(KeyValuePairfirstPair,KeyValuePairnextPair){returnfirstPair.Value.CompareTo(nextPair.Value);});如果要在评论区说说简单快捷的方法,我觉得除了Linq应该没有什么好的方法了。如果我要实现的话,我大概会这样写。varordered=dict.OrderBy(x=>x.Value).ToDictionary(x=>x.Key,x=>x.Value);