程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C# List.sort排序詳解(多權重,升序降序),

C# List.sort排序詳解(多權重,升序降序),

編輯:C#入門知識

C# List.sort排序詳解(多權重,升序降序),


很多人可能喜歡Linq的orderBy排序,可惜U3D裡面linq在Ios上會報錯,所以就必須使用list的排序。

其實理解了並不難

 

 

 

升序降序比較


sort有三種結果 1,-1,0分別是大,小,相等。

默認List的排序是升序排序

如果要降序排序,也很簡單,只需要在前面加一個負號

List<int> tmp = new List<int>(){5,1,22,11,4};
tmp.Sort((x, y) => -x.CompareTo(y));
Console.WriteLine(tmp);
//22,11,5,4,1

 

對於非數值類型比較用.CompareTo(...),基於IComparable接口。基本上C#的值類型都有實現這個接口,包括string。

而數值類型也可以自己比較。排序時左右兩個變量必須是左-比較-右(被比較),切記不可反過來用。

微軟官方推薦的參數命名方式是x(左),y(右)

 

 

多權重比較


 

假設需要tuple裡item2的值優先於item1。這個時候只要給比較結果*X。

List<Tuple<int, int>> tmp = new List<Tuple<int, int>>()
{
    new Tuple<int,int>(2,1),
    new Tuple<int,int>(53,1),
    new Tuple<int,int>(12,1),
    new Tuple<int,int>(22,3),
    new Tuple<int,int>(1,2),
};
tmp.Sort((x, y) => -(x.Item1.CompareTo(y.Item1) + x.Item2.CompareTo(y.Item2) * 2));
Console.WriteLine(tmp);
//22,3
//1,2
//53,1
//12,1
//2,1

 如果單獨對升序降序控制,可以去掉大括號,分開處理

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved