C# list 多條件排序

今天在工作中遇到一個狀況,一個騎乘列表list  (List<HorseDate> list = new List<HorseDate>())

列表的排序規則優先級:

1.首先按照騎乘等級降序排序

2.其實按照騎乘上陣等級降序排列

3.再次按照騎乘品質降序排列

4.最後按照騎乘ID降序排列


下午考慮了一下,覺得頭大了,就索性睡了一覺,結果在夢中來了靈感!!!(看來以後遇到困難的問題得先睡覺啦)

言歸正傳:

已知條件是一個是horseList列表, 一個是HorseDate類

接下來就是見證奇蹟的時刻:

其實原理很簡單list本身含sort方法,並支持自定義排序規則

private int SortByID(HorseDate a1, HorseDate a2)
{
            if (a1.level.CompareTo(a2.level) != 0)
                return -(a1.level.CompareTo(a2.level));
            else if (a1.ToLevel.CompareTo(a2.ToLevel) != 0)
                return -(a1.ToLevel.CompareTo(a2.ToLevel));
	    else if (a1.Quality.CompareTo(a2.Quality) != 0)
                return -(a1.Quality.CompareTo(a2.Quality));
	    else if (a1.ID.CompareTo(a2.ID) != 0)
                return -(a1.ID.CompareTo(a2.ID));
            else
                return 1;
}

程序中直接調用

horseList,.Sort(SortByID);


最後,有人注意到爲什麼return返回的降序嗎?哈哈,因爲前面提到過這個功能是要按照降序排列的,所以前面需要加負號,如果是升序排列就不需要了


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章