2012-12-18 34 views
4

我想顯示日期的項目降序列表,但我似乎無法得到orderby子句做雙重排序。對於一個普通的美國人來說,你想按照年份先排序,然後再按月排列幾天。請參閱下面的代碼。OrderBy Linq與美國日期

2012年10月21日= 2012年10月21日

2012年12月3日= 12/03/2012

Januaray 15日,2013 = 2013年1月15日

無論我如何分類,我總是得到我在下面看到的內容,我嘗試過更改字符串格式化程序,但這似乎並不正確。我爲該子句添加了一些轉換/解析方法,但這並沒有幫助。我正在尋找高性能解決方案,因爲這是一款使用非常長名單的移動應用程序。什麼是最快的方法來做到這一點?創建一個自定義比較器?有沒有辦法做第二個orderby子句?

我最終看到的是,2012年之後爲什麼不是2013年?

2013年1月15日

2013年10月21日

12/03/2012

IEnumerable<Group<FeedItem>> sortedItems = 
    from feedItem in _localLists.CustomList 
    group feedItem by feedItem.EventDate 
    into c 
    orderby 
     (DateTime.ParseExact(c.Key, "MM-dd-yyyy", 
      CultureInfo.InvariantCulture)) ascending 
    select new Group<FeedItem>(c.Key, c); 
+3

爲什麼日期首先存儲爲字符串? –

+2

2nd order by:'ThenBy'是方法。在查詢語法中,輸入一個逗號,然後輸入下一個字段進行排序。 '... orderby a,b'。 –

+6

在ParseExact的格式說明符中,您有破折號( - ),而您的示例數據中有斜槓(/)。問題可能是ParseExact失敗,因爲格式不匹配? – craftworkgames

回答

0

我回去,並改變了字符串到日期時間,這顯然是一個加號。問題只是顯示。我正在使用telerik控件對列表進行分組和篩選,linq沒有推動我所看到的。該解決方案是在UI上的不正確的設置。

相關問題