2010-04-19 20 views
6

que tienen un diccionario en forma de:Ordenar un diccionario por valor

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

que desea ordenar por la segunda columna alias (el valor) descendente.

salida deseada:

"chevy", 10

"Toyota", 7

"honda", 4

"ford", 3

Respuesta

0

En realidad, si se trata de HashTable, no se puede ordenar. Por otro lado, si tiene una ArrayList o cualquier otra colección que pueda clasificarse, puede implementar su propio 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

+0

obtiene un error de "implementa IComparer": Clase MyDictComparer Pública implementa IComparer Función Pública Comparar (ByVal x As [Objeto], ByVal y AS [Objeto]) como número entero Dim Num1 Como DictionaryEntry = DirectCast (x, DictionaryEntry) Dim Num2 Como DictionaryEntry = DirectCast (y, DictionaryEntry) Si CInt (Num1.Value) CInt (Num2.Value) Luego Retorno -1 Fin Si Retorno 0 Fin Función End Class – s15199d

+0

Mensaje de error: La clase 'CountValueComparer' debe implementar 'Function Compare (x As Object, y As Object) As Integer' para la interfaz 'System.Collections.IComparer'. – s15199d

Cuestiones relacionadas