我有两张桌子 - 博客和帖子(一对多关系)。
我希望获得至少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订购?
答案 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();