2013-05-03 74 views
0

我有一個日期字段,我將數據庫的值從日期時間轉換爲字符串格式(「dd-MMM-yyyy」),我需要執行排序此字符串日期字段,但好像當我一直在進行分類時,它正在工作,只檢查日期,而不是一個月,也不是一年。 所以當數據在日期格式(數據庫):在Linq的字符串的子字符串排序

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

所以它是排序像

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

但它的排序: 29-JAN-2012 28月2013 01-Jan-2011

所以我想應用orderbydescending-> then by->等,我需要從最後分割字符串,有沒有辦法解決? 我在做:

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

回答

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)) 
+0

感謝您的接受,並希望您會投票回答 – 2013-05-03 20:09:16

+1

肯定的好友!我也投了贊成票。 – 2013-05-06 06:03:50

0

當你使用日期時事情會更容易。首先,我會考慮從數據庫中獲取日期而不轉換爲字符串。如果失敗,如果您想訂購像一個日期的字符串,你可以做到這一點...

lst.OrderByDescending(d=>DateTime.Parse(d.TDate)) 
+0

我一直在做同樣的,但後來在會話時,文本作爲一個字符串,然後我需要在會話中進行排序,其中格式顯然是字符串。 – 2013-05-03 11:03:37

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擺在首位並將其轉換爲最後一個字符串。

+0

@ItiTyagi:我不明白你的意見。 – 2013-05-04 08:52:31