键值对按键和按值排序方法
以下说明键值对类型数据按键和按值排序的方法
(1)按键排序
对于键值对如IDictionary<string, double>等键值对类型按键排序方法很简单,是要放到类型SortedList<string, double>中即可完成排序。注意按键排序因为是键值对类型,故键必须唯一,不能有重复。
(2)按值排序
对于键值对如IDictionary<string, double>等键值对类型按值排序方法就比较麻烦,因为.Net中没有提供相关类型的排序,而使用SortedList也不能完成,即使是交换键值,因为值有可能重复。
一种方法就是:
将键和值分别放到两个数组中,然后使用Array.Sort(数组a,数组b)排序,注意数组a,数组b的维数和个数必须相同,且要排序的数组放到第一个,数组b的顺序会按照数组a的排序Index进行调整顺序。该种排序时升序排列。要完成降序排列,只需要使用Array.Reverse()反转数组,两个数组需要同时反转。然后,再按顺序将排序好的数组放到键值对类型中。
例如:
if (bSorted) { string[] arrayName = new string[dicItems.Count]; double[] arrayValue = new double[dicItems.Count]; dicItems.Keys.CopyTo(arrayName, 0); dicItems.Values.CopyTo(arrayValue, 0); Array.Sort(arrayValue, arrayName); Array.Reverse(arrayValue); Array.Reverse(arrayName); IDictionary<string, IStaticValues> dicSorted = new Dictionary<string, IStaticValues>(); for (int i = 0; i < arrayName.Length; i++) { dicSorted.Add(arrayName[i], dic[arrayName[i]]); } return dicSorted; }