2012-12-18 28 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上的不正确的设置。

相关问题