博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C# List.sort排序详解(多权重,升序降序)
阅读量:6986 次
发布时间:2019-06-27

本文共 886 字,大约阅读时间需要 2 分钟。

很多人可能喜欢Linq的orderBy排序,可惜U3D里面linq在Ios上会报错,所以就必须使用list的排序。

其实理解了并不难

 

 

 

升序降序比较


sort有三种结果 1,-1,0分别是大,小,相等。

默认List的排序是升序排序

如果要降序排序,也很简单,只需要在前面加一个负号

List
tmp = new List
(){
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
> tmp = new List
>(){ new Tuple
(2,1), new Tuple
(53,1), new Tuple
(12,1), new Tuple
(22,3), new Tuple
(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

 如果单独对升序降序控制,可以去掉大括号,分开处理

转载地址:http://udqpl.baihongyu.com/

你可能感兴趣的文章
大道至简,职场上做人做事做管理
查看>>
《C++必知必会》读书笔记2
查看>>
web 学习资源整理
查看>>
make 参数定义
查看>>
数组排序(冒泡和快速)
查看>>
java从字符串中提取数字
查看>>
Cardinality Feedback
查看>>
Android App Build System
查看>>
Python yield与实现
查看>>
终端中的乐趣:6个有趣的Linux命令行工具
查看>>
【技术贴】TOMCAT,Mysql提示Unknown column 'content' in 'fi
查看>>
EBS xml publisher中文乱码
查看>>
ext-anychart饼图呈现取自数据库中的数据
查看>>
Android深入浅出系列之服务机制—1.Android中的Service
查看>>
zz:彻底解决兼容性问题:Windows 7下载安装 Visual C++ 6.0(VC6)
查看>>
MVC、MVP以及Model2[上篇]
查看>>
面试总结,坚定自己的想法
查看>>
数据库隐式类型转换
查看>>
解决WCF调用多次之后没有响应的问题 转
查看>>
【BZOJ2318】【spoj4060】game with probability Problem 概率DP
查看>>