繁体   English   中英

按列表排序<string>中间 2 个字符</string>

[英]sorting on List<string> with middle 2 character

我喜欢用中间 2 个字符对列表进行排序。 例如:该列表包含以下内容:

body1text
body2text
body11text
body3text
body12text
body13text

如果我应用 list.OrderBy(r => r.body),它将按如下方式排序:

body1text
body11text
body12text
body13text
body2text
body3text

但我需要以下结果:

body1text
body2text
body3text
body11text
body12text
body13text

有没有简单的方法可以用中间 2 位字符进行排序?

问候舒夫拉

这里的问题是您的数字作为字符串进行比较,因此string.Compare("11", "2")将返回-1意味着“11”小于“2”。 假设您的字符串始终采用 "body" + n numbers + "text" 格式,您可以将数字与正则表达式匹配并从结果中解析 integer:

new[] 
{
    "body1text"
    ,"body2text"
    ,"body3text"
    ,"body11text"
    ,"body12text"
    ,"body13text"
}
.OrderBy(s => int.Parse(Regex.Match(s,@"\d+").Value))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM