日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

C# List.sort排序详解(多权重,升序降序)

發(fā)布時間:2024/9/20 C# 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C# List.sort排序详解(多权重,升序降序) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

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

其實理解了并不難

?

?

?

升序降序比較


sort有三種結(jié)果 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

?

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

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

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

?

?

多權(quán)重比較


?

假設需要tuple里item2的值優(yōu)先于item1。這個時候只要給比較結(jié)果*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
//Tip: Item2 > Item1

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

總結(jié)

以上是生活随笔為你收集整理的C# List.sort排序详解(多权重,升序降序)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。