按特定变量排序班级列表

nuu*_*use 1 .net c# linq sorting

我有一个类列表,其中包含一个字符串.我想用来命令列表的字符串,如下所示:"A1534-11"

我想在信后用4个数字来命令它们.基本OrderBy方法只是按字母排序.我怎样才能做到这一点?

这就是我想要的:

"A1534-11"
"D1535-11"
"C1536-11"
Run Code Online (Sandbox Code Playgroud)

Sal*_*ari 7

使用LINQ和TakeWhile方法:

var result = lst.OrderBy(c => int.Parse(string.Join("",c.Name.Skip(1)
                             .TakeWhile(char.IsDigit)))).ToList();
Run Code Online (Sandbox Code Playgroud)

我假设你的班级有一个名字的财产Name.当然,您应该将其更改为您的财产名称.

  • 我喜欢这个,因为它具有内置的数字位数灵活性. (2认同)

Tim*_*ter 6

您可以解析该子字符串并使用结果整数作为LINQ方法OrderBy:

list = list.OrderBy(x => int.Parse(x.Text.Substring(1, 4))).ToList();
Run Code Online (Sandbox Code Playgroud)