如何按值的数字部分排序List <keyvaluepair <string,string =“” >>?

时间:2018-08-03 03:31:46

标签: c# linq

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

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

输出:CR1 CR10 CR11 CR2 CR20

预期:CR1 CR2 CR10 CR11 CR20

1 个答案:

答案 0 :(得分:0)

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

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

否则,请使用正则表达式,如this answer中所述。

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