如何按数字顺序排序列表(同一列表中的数字和单词)

时间:2017-10-24 20:28:25

标签: c# string list sorting

我需要按数字顺序排序一个列表,其中包含带有数字和单词的字符串,例如:“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。

1 个答案:

答案 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();