想象一下,我有一个字符串列表或自定义列表,其中一个字符串字段包含以下数据
A 5 D 3 1 B 2 4 C
如何对此列表进行排序,以便输出
A B C D 1 2 3 4 5
其中Orderby
给出以下答案
1 2 3 4 5 A B C D
答案 0 :(得分:2)
更简单的方法:
string inputString = "A5D31B24C";
var Output = inputString.OrderBy(x => Char.IsDigit(x)).ThenBy(x=>x).ToList();
第一个OrderBy
将按如下方式对列表进行排序:ABCD53124
,这是因为OrderBy将按false
然后true
的顺序评估布尔值。以下ThenBy
将为您提供ABCD12345
答案 1 :(得分:1)
您可以使用以下LINQ,按字母顺序对列表进行排序,然后按数值排序:
var result = list.OrderByDescending(x => x.All(char.IsLetter))
.ThenByDescending(x => x.Any(char.IsDigit))
.ThenBy(x => x)
.ToList();
答案 2 :(得分:0)
像这样使用OrderBy
:
List<char> str = new List<char>{'A' ,'5' ,'D', '3', '1' ,'B' ,'2' ,'4' ,'C'};
//Or string str = "A5D31B24C";
var sorted = str.OrderBy(c => char.IsLetter(c) ? 0 : 1).ThenBy(c => c).ToList();
答案 3 :(得分:0)
一种方法是优先考虑信件。
list.OrderBy(x=> char.IsDigit(x)? 255+x : x);