List的Sort 函数CompareTo升序降序排序
一、升序、降序
其實(shí)C#中的List的Sort函數(shù)中的比較函數(shù)CompareTo有三種結(jié)果 1, -1 ,0分別代表大,小,相等。默認(rèn)List的排序是升序排序。
舉個(gè)例子:在比較函數(shù)CompareTo()中,如果 x>y return 1;則是按照升序排列。如果x>y return -1;則是按照降序排列。這就是1和-1大小的含義。其實(shí)你非要這么寫 x<y return 1;則也表示降序排列。不過大家一般習(xí)慣x>y return 1;升序,如果想要降序只需return -1;即可。
Tips:系統(tǒng)List默認(rèn)的排序是升序,如果你想要降序,可以直接在比較函數(shù)前面加個(gè)負(fù)號(hào),把返回結(jié)果由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- ?
二、對于非數(shù)值類型、string等或者官方未來實(shí)現(xiàn)IComparable接口的類型,可通過實(shí)現(xiàn)IComparable接口重寫CompareTo方法來排序。
舉個(gè)例子:自定義一個(gè)類,然后繼承字: IComparable<>,然后實(shí)現(xiàn)接口的方法 int CompareTo(object obj_)就可以了
- ?
三、多權(quán)重排序
其實(shí)就是對優(yōu)先級(jí)最高的字段進(jìn)行排序,然后在對次級(jí)優(yōu)先級(jí)的字段進(jìn)行排序就可以了。例如對Persond的對象先進(jìn)行ID排序,然后再進(jìn)行Name排序:
- ?
四、使用匿名函數(shù)來實(shí)現(xiàn)Comparison
雖然想實(shí)現(xiàn)排序上面的接口代碼也不多,但有時(shí)候只是偶爾排序,并不想修改類,怎么辦呢?當(dāng)然有更簡單的方法,委托和lambda表達(dá)式:
- ?
**List筆記
List賦值到另一個(gè)List的方法,進(jìn)行AddRange。
總結(jié)
以上是生活随笔為你收集整理的List的Sort 函数CompareTo升序降序排序的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 评分建模之账龄分析
- 下一篇: AARRR框架度量指标介绍,让你的初创公