列表排序有bug

BUG反馈 · 507 次浏览
炸鸡爱上冰可乐 创建于 2023-07-15 19:42

列表排序中,自然排序a-z,在整数方面排序挺精确,但是到了小数方面,就有小bug。以下是罗列

第一组数据:0.3 0.2 0.1 0.09 0.8 0.04 0.03 0.2 0.02 0.01

第二次遇到:.。。。0.8 0.7 .。。。 0.1 0.8 0.08 0.7 0.51 0.41 0.3 0.03 0.2

 


回复内容
CL 2023-07-15 21:11
#1

这个算法是调用windows的API,主要用于排序文件名,如果要排序数字,可以用表达式

$= {list}
 .OrderBy(x => Convert.ToDecimal(x))
 .ToList();



CL 最后更新于 2023-07-15 21:42
炸鸡爱上冰可乐 回复 CL 2023-07-15 22:15 :

我是这样用排序的:

数字1 中文jiweje

数字2 中文fjowejfeiw

。。。

。。。

数字n 中文wjeio

---------------------------------------

这样之后将头的数字去了就是我想要的中文部分的数据的排序了

有什么方法解决,保证数字的大小排列正确,又保留中文与原来数字的对应关系?

CL 回复 炸鸡爱上冰可乐 2023-07-15 22:24 :

你是只想保留后面的中文部分,但是想让它们按前面的数字排序么?

$={list}
.Select(x => x.Split(new char[]{' '},2))  //每一项拆分成列表
.OrderBy(x => Convert.ToDouble(x[0]))     //根据前面的数字排序
.Select(x => x[1])                          //返回列表的第二个部分
.ToList()


炸鸡爱上冰可乐 回复 CL 2023-07-15 22:39 :

运行失败


CL 回复 炸鸡爱上冰可乐 2023-07-15 22:41 :

list需要是列表变量。

炸鸡爱上冰可乐 回复 CL 2023-07-15 23:02 :

O,多谢,都成功了。

回复主贴