> 按数值的数字部分?,c#,linq"/>

首页 > 解决方案 > 如何对列表进行排序> 按数值的数字部分?

问题描述

var keyValuePairList = model.someDictionary.ToList();
keyValuePairList .OrderBy(r => r.Value);

问题是按字母数字值排序不正确。

输出:CR1 CR10 CR11 CR2 CR20

预期:CR1 CR2 CR10 CR11 CR20

标签: c#linq

解决方案


如果每个字符串都以两个字母字符开头,我将使用以下内容:

keyValuePairList.OrderBy(r => int.Parse(r.Value.Substring(2)));

否则,请使用正则表达式,如本答案中所述。

var re = new  Regex(@"\d+$");
keyValuePairList.OrderBy(x => int.Parse(re.Match(x.Value).Value));

推荐阅读