使用特殊字符在C#中对列表进行排序

时间:2015-10-30 18:18:01

标签: c# .net linq sorting

我有一个List<string>,其中包含以下值:

1 / 324324 10 / 324234 61 / 917752 62 / 917762 7 / 917718 8 / 917719 9 / 917720

我希望根据正斜杠之前的数字将它们排序如下:

1 / 324324 7 / 917718 8 / 917719 9 / 917720 10 / 324234 61 / 917752 62 / 917762

因为它们是字符串值,所以list.sort()方法不起作用。

任何想法?

3 个答案:

答案 0 :(得分:6)

您可以按斜线拆分项目并按数字排序:

var sorted  = input.OrderBy(a=>int.Parse(a.Split('/')[0]));

答案 1 :(得分:0)

使用List<T>.Sort()方法

执行此操作
// init list
var list = new List<String>();

// add items
// some code here

// sort items
list.Sort((s1, s2) => 
{
    var n1 = Int32.Parse(s1.Split('/')[0]);
    var n2 = Int32.Parse(s2.Split('/')[0]);

    return n1 - n2;
});

使用linq你可以像

那样做
var sortedList = list.OrderBy(item=> Int32.Parse(item.Split('/')[0])).ToList();

答案 2 :(得分:0)

如果斜杠左侧的值是唯一的,您可以在斜杠上拆分字符串,修剪值并将它们添加到sorted list。然后你可以让框架为你工作。