我已经创建了下面的LINQ查询来演示该问题怪异的结果:LINQ的OrderBy子句导致
string[] dateStrings = new string[] { "2009-07-20 13:00:00", "2009-07-20 16:00:00", "2009-07-20 09:00:00" };
DateTime dateValue = DateTime.MinValue;
var results =
from dateString in dateStrings
where DateTime.TryParse(dateString, out dateValue)
orderby dateValue descending
select dateValue;
你所期望的结果是DateTime是否在相反的顺序列表:
20- 7-2009 16:00:00
20-7-2009 13:00:00
20-7-2009 9:00:00
但是我得到的是这样的:
20-7-2009 9:00:00
20-7-2009 9:00:00
20-7-2009 9:00:00
我在做什么错? 如果您删除orderby语句,您会注意到一个DateTime的正常列表。
抱歉忘记在这个例子中输入。我已经更新了这个问题。没有秩序,一切都很好。 – Zyphrax 2009-07-21 12:43:07
orderby必须在订购可能继续之前急切地解决该点之上的查询。在where条款处理了所有三条记录之后,dateValue的值已经获得它的最终值。然后orderby操作并按该值排序。然后选择操作并投影一个值3次。 – 2009-07-21 12:46:17