当前位置: 代码迷 >> C# >> 请教列表List<string>怎么排序
  详细解决方案

请教列表List<string>怎么排序

热度:96   发布时间:2016-05-05 04:24:33.0
请问列表List<string>,如何排序
排序一
List<string> strList = new List<string>(new String[] { "1.3", "-1.1", "2", "1", "-2", "2.3", "3.2", "-1"});

想要的排序结果为:
-2, -1.1, -1, 1, 1.3, 2, 2.3, 3.2

排序二
如果里面再增加两个中文的,如何排序???
List<string> strList = new List<string>(new String[] { "1.3", "-1.1", "2", "1", "-2", "2.3", "3.2", "1层", "-1", "2层"});

想要的排序结果为:

-2, -1.1, -1, 1, 1.3, 1层, 2, 2.3, 2层, 3.2
或者
-2, -1.1, -1, 1, 1层, 1.3, 2, 2层, 2.3, 3.2
------解决思路----------------------
这可不好整了。你只能写个方法
取里面的数值。然后再排序
------解决思路----------------------
实现IComparable接口,然后自己定规则.
------解决思路----------------------
引用:
第二个这样

strList = strList.OrderBy(o => double.Parse(o.Replace("层",""))).ToList();

也可以,不过你要保证他都是只有一个层这个字符,然后其他的都是数字就可以了。

正解。
------解决思路----------------------
数字、字母、中文混杂排序很难能够排出你想要的结果来,最好是加个用来排序的int型字段。List的排序方法4楼已经给出了,就不再啰嗦了
------解决思路----------------------
你这个就是先转化成数字,然后orderby一下就可以了啊,负数在前,正数在后,从小到大正序排
list.Select(x=>decimal.Parse(x)).OrderBy(x).Select(x=>x.ToString())

------解决思路----------------------
自己写个吧,起泡法。
  相关解决方案