嗨我在使用linq订购时遇到问题。 我有一个带有两个日期时间字段的对象。一个只存储日期(例如8/2/2010)并将时间保留为全0
虽然在制作记录时创建了另一个日期时间字段,并且还有时间。这两个领域的想法是因为我可能想要在我的网站上添加几天的“标题/文章”。因此,我选择的第一个Datetime称为“Date”,通常这是默认为今天的日期。
我遇到的问题是我可以按日期订购,但如果我在同一日期添加了一些文章(因此在日期库中它们的日期字段都相同),最新的文章将放在三者的底部!
例:
Article1 - 12/08/2010 - 12/08/2010 2:45 pm
第2条 - 12/08/2010 - 12/08/2010 3:45 pm
第3条 - 12/08/2010 - 12/08/2010 4:45 pm
第4条 - 11/08/2010 - 12/08/2010 2:50 pm
它们似乎只按日期字段排序而不是日期字段然后创建日期字段,我认为它们应该在我使用命令时(因为它们的日期字段相同)
HeadlineRepository.All().OrderByDescending(x => x.Date).ThenByDescending(x => x.Created).Take(8)
在这里输了一点试图将它们交换在一起但是没有产生我想要的结果。似乎它只是忽略了thenbydescending ......
史蒂夫
EDITED
为您提供更多信息
Headlines = repository.All().OrderByDescending(x => x.Date).ThenByDescending(x => x.Created)
生成(显示日期然后显示)
10/08/2010 00:00:00 10/08/2010 19:27:46
10/08/2010 00:00:00 10/08/2010 19:27:21
09/08/2010 00:00:00 10/08/2010 21:28:11
09/08/2010 00:00:00 09/08/2010 00:00:00
while Gives
Headlines = repository.All().OrderByDescending(x => x.Created).ThenByDescending(x => x.Date),
09/08/2010 00:00:00 10/08/2010 21:28:11
10/08/2010 00:00:00 10/08/2010 19:27:46
10/08/2010 00:00:00 10/08/2010 19:27:21
09/08/2010 00:00:00 09/08/2010 00:00:00
答案 0 :(得分:2)
看来你的逻辑是正确的。我已在http://pastebin.org/467317
的控制台应用中重现了您的方案使用此语句可生成您期望的结果。
reg.OrderByDescending(x=>x.RegisteredOn)
.ThenByDescending(x=>x.StartsClassOn)
.Take(8)
您是将LINQ查询分配给变量还是确保它按预期执行?