我正在使用C#和LINQ,我在Date类型中有一些Date
目前我正在使用此脚本按开始日期,从早期到最晚来订购列表.
使用以下代码,我的事件未排序:
events.OrderBy(x => x.DateTimeStart).ToList(); return events.AsQueryable();
这可能有什么问题?
解决方法
events.OrderBy(x => x.DateTimeStart):声明一个按属性DateTimeStart对事件进行排序的查询.查询尚未执行.
events.OrderBy(x => x.DateTimeStart).ToList();:处理上一个查询.迭代所有事件,检查他们的DateTimeStart,将它们和安全结果排序为List然后……丢弃结果!因为你不安全.将它与类似的东西进行比较:
int a = 0; a + 1; b = a; // b is 0
return events.AsQueryable();:在这里,您将返回原始事件而不是已排序.
您应该按如下方式编写代码:
return events.OrderBy(x => x.DateTimeStart).ToList().AsQueryable();
该版本将创建已排序事件的静态列表.如果现在您更改了事件列表,则结果将不会考虑您的更改.
第二个解决方案是:
return events.OrderBy(x => x.DateTimeStart).AsQueryable();
该版本不起作用.它只是声明一种对事件进行排序的方式,并将该方式返回为IQueryable.如果在将来的代码中使用返回值,它将始终包含所有已排序的事件,即使您在使用之前添加新事件也是如此.
原文地址:https://www.jb51.cc/csharp/98341.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。