2010-04-19 12 views
6

Mam słownika w formie:Sortowanie słownika Wartość

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

chcę sortować je według drugiej kolumnie aka (wartość) malejące.

sygnał wyjściowy:

"pogoń" 10

"Toyota", 7

"Honda", 4

"Ford" 3

Odpowiedz

0

W rzeczywistości, jeśli jest to HashTable, nie można go sortować. Z drugiej strony, jeśli masz ArrayList lub innych kolekcji, które mogą być sortowane, można zaimplementować własną 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

Get błąd na "realizuje IComparer": Klasa publiczna MyDictComparer Wbudowy IComparer Public Function Porównaj (ByVal x W [Obiekt], ByVal y Jako [Object]) As Integer Dim num1 As DictionaryEntry = DirectCast (x, DictionaryEntry) Dim num2 jako DictionaryEntry = DirectCast (Y, DictionaryEntry) Jeśli CInt (Num1.Value) CInt (Num2.Value) Następnie Powrót -1 End If Return 0 End Function End Class – s15199d

+0

komunikat o błędzie: Klasy CountValueComparer 'musi wdrożyć 'Funkcja Porównaj (x, y As Object As Object) As Integer' dla interfejsu 'System.Collections.IComparer'. – s15199d

Powiązane problemy