为了账号安全,请及时绑定邮箱和手机立即绑定

OrderBy 自定义比较器数字前的特定字母

OrderBy 自定义比较器数字前的特定字母

C#
月关宝盒 2023-08-20 15:57:02
假设我有以下列表:var lettersAndNumbers = new List<string> { "5", "kl", "1", "st", "3" };如何OrderBy对列表进行排序,我可以在其中指定kl第一项、st下一项以及剩余序列应按数字从低到高排序?我知道我需要使用自定义comparer. 我尝试并创建了一个comparer类实现ICompareable,但我似乎无法使其工作。任何帮助深表感谢。
查看完整描述

1 回答

?
慕后森

TA贡献1802条经验 获得超5个赞

你不需要 acomparer来实现这一点。尝试这样的事情:

var res = lettersAndNumbers.OrderBy(c => !int.TryParse(c, out var temp) ? c : 
                                         temp.ToString("D10"))
                                        .OrderBy(c=> !char.IsDigit(c[0]) ? 0 : 1).ToList();


查看完整回答
反对 回复 2023-08-20
  • 1 回答
  • 0 关注
  • 78 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信