Linq Lambda在DateField上排序

时间:2012-11-08 11:06:33

标签: linq lambda

今天,当我使用Linq + lambda对列表进行排序时发生了一些奇怪的事情。 我有一个列表,其中的文章应该是字段上的OrderedByDescending c => c.Statistics.Created。该字段作为DateTime返回。我做了以下事情:

newsItems = newsItems.OrderByDescending(c => c.Statistics.Created).ToArray<Item>(); 

据我所知,此列表将按降序排序,并且此日期的时间也会被监视,因为这只是一个DateTime对象。现在奇怪的部分。我调整代码以查看以下内容:

 newsItems = newsItems.OrderByDescending(c => c.Statistics.Created.Date).ToArray<Item>();  

现在,当我查看列表时,项目仍按照应有的顺序排序。当我告诉Linq只看日期时,我无法理解为什么列表仍然以正确的方式排序。不知怎的,Linq决定看看时间。当我将我的应用程序附加到w3p进程并观察发生了什么时,我发现Date对象上的Time实际上是空的,就像我期望的那样。 当有人告诉linq只查看日期时,有人可以解释一下这个列表是如何按时排序的吗?

已经解决了!

我已经发现了导致这种奇怪行为的原因。这个列表(从CMS中获得)已经以某种方式订购了。当我按日期排序(没有时间)时,订单显然是正确的,Linq没有对此日期做任何其他事情。

0 个答案:

没有答案