2010-08-10 34 views
2

嗨即時通訊與linq訂購問題。 我有一個有兩個日期時間字段的對象。一個只是存儲日期(例如8/2/2010)並保留所有0的時間Linq OrderByDescending ThenByDescending問題

雖然其他日期時間字段是在創建記錄時創建的,並且還有時間。這兩個領域的想法是因爲我可能想爲我的網站添加一個幾天前的「標題/文章」。所以第一個Datetime叫做「Date」是我選擇的那個,通常這是默認爲今天的日期。

問題我有我可以訂購的日期但如果我在同一日期添加了一些文章(因此在日期庫中它們的日期字段都是相同的)最新的文章放在三個!

實施例:
第一條 - 12/08/2010 - 12/08/2010下午2:45
第二條 - 12/08/2010 - 12/08/2010下午3點45分
第三條 - 19/08/2010 - 12/08/2010 4:45 pm
Article4 - 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 00:00:00 09/08/2010

雖然給出

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分二十一秒

09/08/2010 00:00:00 09/08/2010 00:00:00

+0

不限運氣試圖'HeadlineRepository.All()。OrderByDescending(X => x.Date.Date).ThenByDescending(X => x.Created)。取(8)'? – kbrimington 2010-08-10 20:52:52

+0

這段代碼在您的示例集中生成的順序是什麼? – 2010-08-10 21:06:42

+1

您的代碼示例不會將表達式的結果分配給變量。你不期望這些方法對你的原始收藏有副作用嗎? – 2010-08-10 21:28:14

回答

2

看來你的邏輯是正確的。我已經在控制檯應用程序中複製了您的場景http://pastebin.org/467317

使用此語句會生成您期望的結果。

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

您是否將LINQ查詢分配給變量或確保以某種方式按預期執行?

alt text