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();

さらに良いことに、最初に a を格納し、DateTime最後の場所で文字列に変換します。

于 2013-05-03T11:03:37.763 に答える