當前位置:成語大全網 - 新華字典 - 如何對Dictionary的值進行排序

如何對Dictionary的值進行排序

在實際開發中遇到壹個比較麻煩的問題,由於數據的不規則性,所以存儲在Dictionary中,這裏就有個麻煩了,如果要按照字典中的值進行排序辦呢。這裏就把解決辦法寫出來。用到的是Array的Sort方法。

壹、首先說下Array的Sort方法,該方法有很多實現,我們要用到的就是 public static void Sort<TKey, TValue>(TKey[] keys, TValue[] items);這個方法,這個方法有個好處就是會按照第壹個數組進行排序,而對應的第二個數組會進行相應的位置變化,可能大家還會感覺有點不理解,下面舉實例。直接上代碼

class Program

{

static void Main(string[] args)

{

Dictionary<string, int> dic = new Dictionary<string, int>();

dic.Add("1", 300);

dic.Add("2", 200);

dic.Add("333", 10);

dic.Add("4", 40);

dic.Add("5", 200);

Sort(ref dic);

Console.Read();

}

public static void Sort(ref Dictionary<string, int> dic)

{

string[] arrayName = new string[dic.Count];

int[] arrayValue = new int[dic.Count];

dic.Keys.CopyTo(arrayName, 0);

dic.Values.CopyTo(arrayValue, 0);

Array.Sort(arrayValue, arrayName);//會根據arrayValue的值進行升序排序,arrayName對應的會進行位置調整

Array.Reverse(arrayValue);//這是為了降序

Array.Reverse(arrayName);

IDictionary<string, int> dicSorted = new Dictionary<string, int>();

for (int i = 0; i < arrayName.Length; i++)

{

dicSorted.Add(arrayName[i], dic[arrayName[i]]);

}

}

}

上面的結果就是

300 1

200 2

200 5

40 4

10 333

這樣就根據字典的值進行相應的排序了