我目前正在開發一個論壇。我是LINQ和EF的新手。在我的論壇中,我有一個顯示屏,首先顯示最近話題的主題列表。LINQ to Entities關於orderby和null集合的問題
問題是「最近的」與主題的回覆有關。所以我不想按主題的發佈日期排列列表,而是想按主題的最後回覆的發佈日期排列列表。所以具有較新回覆的主題回到列表頂部。如果我知道每個主題都至少有一個回覆,這很簡單;我只是這樣做:
var topicsQuery = from x in board.Topics
orderby x.Replies.Last().PostedDate descending
select x;
但是,在很多情況下,該主題沒有答覆。在這種情況下,我想使用主題的發佈日期。在主題沒有回覆的情況下,我的linq查詢中是否有一種方法可以通過x.PostedDate
訂購?我對此感到困惑,任何幫助將不勝感激。使用上述查詢,由於假設有回覆的x.Replies.Last()
,它會打斷沒有回覆的主題。 LastOrDefault()
不起作用,因爲我需要訪問也假定回覆存在的PostedDate屬性。
在此先感謝您的任何見解。
我可以通過獲取所有回覆,遍歷它們並使用if語句來確定是否有答覆並以這種方式構建新列表來實現。但是如果有一種方法可以在查詢中完成而不是每次都循環遍歷它們,那就太棒了。 – Chev 2011-01-09 05:07:03