Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Linq订购的美国日期_C#_Linq - Fatal编程技术网

C# Linq订购的美国日期

C# Linq订购的美国日期,c#,linq,C#,Linq,我想显示带有日期的项的降序列表,但我似乎无法让orderby子句进行双重排序。对于一个普通的美国人来说,你要先按年、月、日来排序。请参见下面的代码 2012年10月21日=2012年10月21日 2012年12月3日=2012年3月12日 2013年1月15日=2013年1月15日 无论我如何排序,我总是得到我在下面看到的内容,我尝试过更改字符串格式化程序,但这似乎不起作用。我在子句中添加了一些convert/parse方法,但没有任何帮助。我正在寻找一个高性能的解决方案,因为这是一个具有很长列

我想显示带有日期的项的降序列表,但我似乎无法让orderby子句进行双重排序。对于一个普通的美国人来说,你要先按年、月、日来排序。请参见下面的代码

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

2012年12月3日=2012年3月12日

2013年1月15日=2013年1月15日

无论我如何排序,我总是得到我在下面看到的内容,我尝试过更改字符串格式化程序,但这似乎不起作用。我在子句中添加了一些convert/parse方法,但没有任何帮助。我正在寻找一个高性能的解决方案,因为这是一个具有很长列表的移动应用程序。最快的方法是什么?创建自定义比较器?有没有办法执行第二个orderby子句

我经常看到的是,为什么2013年不是2012年之后

2013年1月15日

2013年10月21日

2012年3月12日

IEnumerable sortedItems=
来自_localLists.CustomList中的feedItem
按feedItem.EventDate对feedItem进行分组
变成c
订货人
(DateTime.ParseExact(c.Key,“MM-dd-yyyy”,
CultureInfo.InvariantCulture)
选择新组(c键,c);

我返回并将字符串更改为DateTime,这显然是一个加号。问题只是显示而已。我使用telerik控件对列表进行分组、筛选和排序,linq并没有驱动我看到的内容。解决方案是UI上的设置不正确。

为什么首先将日期存储为字符串?第二个顺序是:
然后是by
。在查询语法中,在下一个要排序的字段中输入逗号,例如
。。。orderby a,b
。在格式说明符中有破折号(-),在示例数据中有斜杠(/)。问题是ParseExact会因为格式不匹配而失败吗?请忽略示例中的my/,因为我只是想表达年份不符合顺序的问题。我试过了,但没有精确解析,结果也一样。
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);