使用LINQ的字母数字排序

使用LINQ的字母数字排序,第1张

使用LINQ的字母数字排序

这是因为字符串的默认排序是标准字母数字字典(词典)排序,并且ABC11会先于ABC2,因为排序始终是从左到右进行的。

要获得所需的内容,需要在order by子句中填充数字部分,例如:

 var result = partNumbers.OrderBy(x => PadNumbers(x));

在那里

PadNumbers
可以定义为:

public static string PadNumbers(string input){    return Regex.Replace(input, "[0-9]+", match => match.Value.PadLeft(10, '0'));}

这会将输入字符串中出现的任何数字(或多个数字)填充零,这样可以

OrderBy
看到:

ABC0000000010ABC0000000001...AB0000000011

填充仅发生在用于比较的键上。原始字符串(不带填充)保留在结果中。

请注意,此方法假定输入中数字的最大位数。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5567433.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-14
下一篇 2022-12-14

发表评论

登录后才能评论

评论列表(0条)

保存