[英]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.