今天在工作中遇到一個狀況,一個騎乘列表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返回的降序嗎?哈哈,因爲前面提到過這個功能是要按照降序排列的,所以前面需要加負號,如果是升序排列就不需要了