2010-04-19 31 views
6

Ho un dizionario sotto forma di:Ordinamento un dizionario da Value

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

voglio ordinarlo dalla seconda colonna alias (il valore) discendente.

uscita desiderata:

"chevy", 10

"Toyota", 7

"honda", 4

"ford", 3

risposta

0

In realtà, se è HashTable, non può essere ordinato. D'altra parte, se si dispone di un ArrayList o qualsiasi altra collezione che possono essere ordinati, è possibile implementare il proprio 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

ottiene un errore su "implementa IComparer": Public Class MyDictComparer Implementa IComparer Funzione Pubblica Confronta (ByVal x Come [Object], ByVal y Come [Object]) come numero intero Dim Num1 Come DictionaryEntry = DirectCast (x, DictionaryEntry) Dim Num2 Come DictionaryEntry = DirectCast (y, DictionaryEntry) Se CInt (Num1.Value) CInt (Num2.Value) Poi ritorno -1 End If ritorno 0 End Function Fine message Classe – s15199d

+0

errore: 'CountValueComparer' classe deve implementare 'funzione Compare (x come oggetto, y come oggetto) As Integer' per l'interfaccia 'System.Collections.IComparer'. – s15199d

Problemi correlati