猿问

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

假设我有以下列表:

var lettersAndNumbers = new List<string> { "5", "kl", "1", "st", "3" };

如何OrderBy对列表进行排序,我可以在其中指定kl第一项、st下一项以及剩余序列应按数字从低到高排序?

我知道我需要使用自定义comparer. 我尝试并创建了一个comparer类实现ICompareable,但我似乎无法使其工作。任何帮助深表感谢。


月关宝盒
浏览 79回答 1
1回答

慕后森

你不需要 acomparer来实现这一点。尝试这样的事情:var&nbsp;res&nbsp;=&nbsp;lettersAndNumbers.OrderBy(c&nbsp;=>&nbsp;!int.TryParse(c,&nbsp;out&nbsp;var&nbsp;temp)&nbsp;?&nbsp;c&nbsp;:&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp.ToString("D10")) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.OrderBy(c=>&nbsp;!char.IsDigit(c[0])&nbsp;?&nbsp;0&nbsp;:&nbsp;1).ToList();
随时随地看视频慕课网APP
我要回答