gpt4 book ai didi

c# - Linq OrderByDescending ThenByDescending 问题

转载 作者:太空宇宙 更新时间:2023-11-03 11:45:57 25 4
gpt4 key购买 nike

您好,我在使用 linq 进行订购时遇到了问题。我有一个包含两个日期时间字段的对象。一个只存储日期(例如 8/2/2010)并将时间保留为全 0

而另一个日期时间字段是在创建记录时创建的,并且上面也有时间。这两个字段的想法是因为我可能想在我的网站上添加几天前的“标题/文章”。所以第一个称为“Date”的日期时间是我选择的,一般默认为今天的日期。

我遇到的问题是我可以按日期排序,但如果我在同一日期添加了多篇文章(因此在数据库中它们的日期字段都是相同的),最新的文章将放在三篇文章的底部!

例子:
Article1 - 12/08/2010 - 12/08/2010 2:45pm
Article2 - 12/08/2010 - 12/08/2010 下午 3:45
Article3 - 12/08/2010 - 12/08/2010 下午 4:45
Article4 - 11/08/2010 - 12/08/2010 下午 2:50

他们似乎只按日期字段而不是日期字段排序然后创建日期字段我认为他们应该在我使用命令时(因为他们的日期字段是相同的)

HeadlineRepository.All().OrderByDescending(x => x.Date).ThenByDescending(x => x.Created).Take(8)

有点不知所措,试图将它们交换,但没有产生我想要的结果。似乎它只是忽略了 thenbydescending...

史蒂夫

已编辑

Ok some more information to you all

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

虽然给予

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

最佳答案

看来你的逻辑是正确的。我在 http://pastebin.org/467317 的控制台应用程序中重现了您的场景。

使用此语句会产生您期望的结果。

reg.OrderByDescending(x=>x.RegisteredOn)
.ThenByDescending(x=>x.StartsClassOn)
.Take(8)

您是将 LINQ 查询分配给变量还是以某种方式确保它按预期执行?

alt text

关于c# - Linq OrderByDescending ThenByDescending 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3453278/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com