如何对数字字符串列表进行排序?最好使用LINQ

Dig*_*bar 3 .net c# linq sorting

我有一个以下方式的字符串: -

string[] things = new string[] { "1", "10", "2", "1_1", "2_1","3_1" };
Run Code Online (Sandbox Code Playgroud)

所需的输出是:

"1",
"1_1",
"2",
"2_1",
"3_1",
"10",
Run Code Online (Sandbox Code Playgroud)

我如何使用LINQ实现这一目标?

Mon*_*Zhu 5

是的,您可以拆分每个部分_并将第一个字符串部分转换为整数.在事后排序时,这将确保10不是之前2.然后在第二步中根据最后一个数字进行订购

string[] things = new string[] { "5_3", "5_2", "1", "10", "2", "1_1", "2_1", "1_2", "3_1" };

string[] ordered = things.OrderBy(x=>Convert.ToInt32(x.Split('_').First())).                       
                           ThenBy(x=>Convert.ToInt32(x.Split('_').Last())).ToArray();
Run Code Online (Sandbox Code Playgroud)

输出:

在此输入图像描述

编辑:这是为了提供信息,可以链接到ThenBy文档 ;)