C# Linq OrderByDescending然后ByDescending问题
嗨,我在与linq订购时遇到了问题。 我有一个带有两个datetime字段的对象。其中一个只存储日期(例如2010年8月2日),并将时间保留为所有0 而另一个datetime字段是在创建记录时创建的,并且记录上也有时间。这两个领域的想法是因为我可能想在我的网站上添加几天前的“标题/文章”。所以我选择的是第一个名为“Date”的Datetime,通常默认为今天的日期 我的问题是,我可以按日期订购,但如果我在同一日期添加了许多文章(因此在数据库中,它们的日期字段都是相同的),则最新的文章将放在三篇文章的底部 示例:C# Linq OrderByDescending然后ByDescending问题,c#,asp.net-mvc,linq,C#,Asp.net Mvc,Linq,嗨,我在与linq订购时遇到了问题。 我有一个带有两个datetime字段的对象。其中一个只存储日期(例如2010年8月2日),并将时间保留为所有0 而另一个datetime字段是在创建记录时创建的,并且记录上也有时间。这两个领域的想法是因为我可能想在我的网站上添加几天前的“标题/文章”。所以我选择的是第一个名为“Date”的Datetime,通常默认为今天的日期 我的问题是,我可以按日期订购,但如果我在同一日期添加了许多文章(因此在数据库中,它们的日期字段都是相同的),则最新的文章将放在三篇文
第1条-2010年8月12日-2010年8月12日下午2:45
第2条-2010年8月12日-2010年8月12日下午3:45
第3条-2010年8月12日-2010年8月12日下午4:45
第4条-2010年8月11日-2010年8月12日下午2:50 它们似乎只按日期字段排序,而不是按日期字段排序,然后创建了日期字段,我认为在使用命令时它们应该这样做(因为它们的日期字段是相同的) 在这里有点不知所措试图交换他们两个,但没有产生我想要的结果。似乎它只是忽略了Thenby下降 史蒂夫 编辑 好的,给大家更多的信息
Headlines = repository.All().OrderByDescending(x => x.Date).ThenByDescending(x => x.Created)
生成(然后显示创建日期)
2010年8月10日00:00:00 2010年8月10日19:27:46
2010年8月10日00:00:00 2010年8月10日19:27:21
2010年08月09日00:00:00 2010年08月10日21:28:11
2010年08月09日00:00:00 2010年08月09日00:00:00
而给予
Headlines = repository.All().OrderByDescending(x => x.Created).ThenByDescending(x => x.Date),
2010年08月09日00:00:00 2010年08月10日21:28:11
2010年8月10日00:00:00 2010年8月10日19:27:46
2010年8月10日00:00:00 2010年8月10日19:27:21
09/08/2010 00:00:00 09/08/2010 00:00:00看来您的逻辑是正确的。我在一个控制台应用程序中复制了你的场景 使用此语句会产生预期的结果
reg.OrderByDescending(x=>x.RegisteredOn)
.ThenByDescending(x=>x.StartsClassOn)
.Take(8)
您是将LINQ查询分配给一个变量,还是确保它按预期执行
尝试
headlinepository.All().OrderByDescending(x=>x.Date.Date)。然后ByDescending(x=>x.Created)。Take(8)
?此代码从示例集中生成的顺序是什么?您的代码示例不会将表达式的结果分配给变量。你不指望这些方法会对你的原始收藏产生副作用吧?我更新了这篇文章,给出了更好的例子!
reg.OrderByDescending(x=>x.RegisteredOn)
.ThenByDescending(x=>x.StartsClassOn)
.Take(8)