赞
踩
Dictionary<char, int> dic = new Dictionary<char, int>();
dic.add('a',2);
dic.add('b',3);
dic.add('c',1);
Resolution:
List<char> list = new List<char>(dic.Keys);
1、 list.Sort((a, b) => dic[b] - dic[a]);
2、list.Sort((a, b) => -dic[a].CompareTo(dic[b]));
其实C#中的List的Sort函数中的比较函数CompareTo有三种结果 1, -1 ,0分别代表大,小,相等。默认List的排序是升序排序
在比较函数CompareTo()中,如果 x>y return 1;则是按照升序排列。如果x>y return -1;则是按照降序排列。这就是1和-1大小的含义。其实你非要这么写 x<y return 1;则也表示降序排列。不过大家一般习惯x>y return 1;升序,如果想要降序只需return -1;即可
Tips:系统List默认的排序是升序,如果你想要降序,可以直接在比较函数前面加个负号,把返回结果由1变成-1即可。例如:
- List<int> list = new List<int>() { 2, 1, 3, 4 };
- list.Sort((x, y) => -x.CompareTo(y));
- Console.WriteLine(list); //4,3,2,1
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。