2017-02-24 45 views
1

我有一張兩張表 - 博客和帖子(一對多關係)。排序列表中的子屬性

我想獲得所有博客至少3,博客和訂單列表只發布帖子發佈日期3。

我是想:

_context.Blogs.Where(x => x.IsActive && x.Posts.Count >= 3).OrderByDescending(p => p.Posts.OrderByDescending(x => x.PublishDate)).ToList(); 

,但我得到一個錯誤信息:

ArgumentException: At least one object must implement IComparable. 

UPDATE:

好吧,我看這將是問題按崗位發佈日期排序。 我也在Blog表的LastBuildDate屬性中。那麼我怎麼能通過LastBuildDate命令?

+0

包含的文章表 – Cieja

+0

這是不是意味着您應該先按博客訂購,然後在顯示文章時通過PublishDate訂購?你可以擴展博客有張貼的第一篇文章,所以你可以在博客上訂購,然後在顯示帖子的位置,排序在帖子上... – Icepickle

+0

我在我的linq有點生疏,但如何它是否知道通過什麼來訂購博客?在我看來,訂購博客內部的帖子並不一定正確? – beardedmogul

回答

0

試試這個,我還沒有測試過。

_context.Blogs.Where(x => x.IsActive && x.Posts.Count >= 3).OrderByDescending(x => x.LastBuildDate).ToList(); 
+0

我的linq很生鏽: - /嘗試刪除OrderByDescending()中的所有內容我非常肯定你可以做到這一點。 – beardedmogul

3

嵌套排序擺脫這樣的:

.OrderByDescending(p => p.Posts.OrderByDescending(x => x.PublishDate)) 

外順序評估對象,該帖子屬性是,它不實現IComparable的。例如,如果您這樣做:

.OrderByDescending(p => p.Posts.Max(x => x.PublishDate)) 

最大返回日期時間。然而,在帖子OrderbyDescending返回的東西,它不能在這裏評估...

+0

好的,謝謝。我已經更新了我的問題。 – Cieja