我有一个日期字段,我将数据库的值从datetime转换为字符串格式(“dd-MMM-yyyy”),我需要对此字符串日期字段进行排序,但看起来就像我一直在做的那样排序,它正在工作,只检查日期,而不是月份,也不是年份。 所以当数据采用日期格式(数据库)时:
2012-01-29
2011-01-01
2013-03-28
所以它的排序方式如
2013-03-28
2012-01-29
2011-01-01
但它已分类: 29-JAN-2012 28-MAR-2013 01-JAN-2011
所以我想申请orderbydescending->然后通过>等等, 我需要将字符串从末尾拆分,是否有办法解决? 我在做:
List<c> lst=lst.OrderByDescending(d=>d.TDate.Substring(d.TDate.LastIndexOf('-').toList();
答案 0 :(得分:1)
这个怎么样,
List<string> lst= new List<string>{"29-Jan-2012", "28-Mar-2013", "01-Jan-2011","2011-01-01","2013-03-28"};
lst.OrderByDescending(x=>DateTime.Parse(x));
在您的样本中应该是,
lst.OrderByDescending(x=>DateTime.Parse(x.TDate))
答案 1 :(得分:0)
使用日期时,事情变得更容易。首先,我将着眼于从数据库中获取日期而不转换为字符串。如果失败了你可以这样做......
lst.OrderByDescending(d=>DateTime.Parse(d.TDate))
答案 2 :(得分:0)
如果您想订购类似日期的字符串,请将其解析为DateTime
:
List<c> lst = lst
.Select(x => new { Obj = x, Date = DateTime.Parse(x.TDate) })
.OrderByDescending(x => x.Date)
.Select(x => x.Obj).ToList();
更好的是,首先存储DateTime
并将其转换为最后一个字符串。