【发布时间】:2018-11-22 05:02:31
【问题描述】:
我有一个日期列表(yyyyMM 格式的字符串),如下所示:
201608
201609
201610
201708
201709
201710
我想将它们重新排序如下:
201608
201708
201609
201709
201610
201710
我以为我可以反转字符串(即016102)来订购它们但显然一个月 >= 10 它会导致问题导致列表出现如下:
201610
201710
201608
201708
201609
201709
我尝试了以下方法:
MyList.OrderBy(n => string.Concat(n.datestring.Reverse())).Select(n => n);
有没有一种简洁的方式来做到这一点(LINQ 会很好)?感谢您的帮助。
【问题讨论】:
-
你不想反转字符串,你想把它分成两个子字符串,年和月,然后分别排序(月,年)。试试
myList.OrderBy(s => s.Substring(4)).ThenBy(s => s.Substring(0, 4)) -
所以,要明确一点,您希望它们按月排序,然后按年排序?或者,您只是按照您说的顺序想要它们。考虑将日期和时间的东西保留为 DateTimes 或 TimeSpan。它们更容易处理。但是,@BrianRogers 的解决方案可能是要走的路(假设我猜对了你的问题陈述)
-
是的,这就是布赖恩的票。晚了。我脑子里放了个屁!谢谢你解开我!我试试看。