我需要按数字顺序排序一个列表,其中包含带有数字和单词的字符串,例如:“100 | Bob”。到目前为止,这是我的代码:
List<string> candidate = new List<string>();
candidate.Add("10 | Dave");
candidate.Add("200 | Bob");
candidate.Add("1000 | Larry");
candidate.Sort();
int i = 0;
while(i < candidate.Count)
{
Console.WriteLine(candidate[i]);
i++;
}
Console.ReadKey();
目前输出:
10 | Dave
1000 | Larry
200 | Bob
但我想输出:
10 | Dave
200 | Bob
1000 | Larry
任何帮助或建议将不胜感激。 谢谢Jarvey。
答案 0 :(得分:1)
我通常会将LINQ用于此目的:
var res = candidate.OrderBy(c => int.Parse(string.Join("", c.TakeWhile(char.IsDigit))))
.ToList();
另一种方法是使用零填充到相同的长度,如下所示:
var res = candidate.OrderBy(c => c.PadLeft(candidate.Max(x => x.Length), '0')).ToList();