按列表中的子属性排序

时间:2017-02-24 20:23:06

标签: c# .net asp.net-mvc entity-framework linq

我有两张桌子 - 博客和帖子(一对多关系)。

我希望获得至少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.

更新

好的,我认为按发布日期排序会有问题。 我还在Blog表LastBuildDate属性中。那么我如何通过LastBuildDate订购?

2 个答案:

答案 0 :(得分:3)

嵌套排序正在抛弃这个:

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

外部顺序是评估Posts属性所在的对象,该对象不实现IComparable。例如,如果您这样做:

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

Max返回DateTime。但是,帖子上的OrderbyDescending会返回无法评估的内容......

答案 1 :(得分:0)

试试这个,我还没有测试过。

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