0

我有一个日期字段,我将数据库的值从日期时间转换为字符串格式(“dd-MMM-yyyy”),我需要对这个字符串日期字段进行排序,但似乎在我进行排序时,它正在工作并且只检查日期,而不是月份和年份。因此,当数据为日期格式(数据库)时:

2012-01-29
2011-01-01
2013-03-28

所以它被排序为

2013-03-28
2012-01-29
2011-01-01

但它已排序:2012 年 1 月 29 日 2013 年 3 月 28 日 2011 年 1 月 1 日

所以我想申请 orderbydescending-> 然后 by-> 依此类推,我需要从末尾拆分字符串,有没有办法解决?我在做:

List<c> lst=lst.OrderByDescending(d=>d.TDate.Substring(d.TDate.LastIndexOf('-').toList();
4

3 回答 3

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))
于 2013-05-03T11:05:40.950 回答
0

使用日期时事情会更容易。首先,我会查看从数据库中获取日期而不转换为字符串。如果失败了,你可以这样做......

lst.OrderByDescending(d=>DateTime.Parse(d.TDate))
于 2013-05-03T11:00:34.710 回答
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首先存储 a 并在最后将其转换为字符串。

于 2013-05-03T11:03:37.763 回答