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

本文关键字:列表 排序 特殊字符 | 更新日期: 2023-09-27 18:19:53

我有一个具有以下值的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()方法不起作用。

有什么想法吗?

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

您可以用斜线分割项目,并按数字排序:

var sorted  = input.OrderBy(a=>int.Parse(a.Split('/')[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();