按值排序字典

时间:2010-04-19 22:03:05

标签: vb.net sorting dictionary

我有一个字典:

{ "honda" : 4, "toyota": 7, "ford" : 3, "chevy": 10 }

我想按第二列(也就是值)降序排序。

期望的输出:

  

“chevy”,10

     

“toyota”,7

     

“honda”,4

     

“福特”,3

2 个答案:

答案 0 :(得分:4)

感谢caryden来自: How do you sort a dictionary by value?

Dim sortedDict = (From entry In dict Order By entry.Value Descending Select entry)

上面报告的问题是由于循环不当造成的。

答案 1 :(得分:0)

实际上,如果它是HashTable,则无法对其进行排序。 另一方面,如果您有一个ArrayList或任何其他可以排序的集合,您可以实现自己的IComparer。

  public class MyDicComparer : IComparer
  {
    public int Compare(Object x, Object y)
    {
      int Num1= ((Dictionary)x).Value;   // or whatever
      int Num2= ((Dictionary)y).Value;

      if (Num1 < Num2) return 1;
      if (Nun1 > Num2) return -1;
      return 0;  // Equals, must be consideres
    }

ArrayList AL;
...
AL.Sort(MyDicComparer);  

HTH