我如何根据 "grandchildren's" 日期对我的事件进行排序
How do i sort my events with regards to "grandchildren's" date
我们有一个 EF6 MVC3 codeFirst 站点。我们的 Events 可能有一组 EventRallies。 EventRallies 可能有 EventOccasions
的集合
我想对它们进行排序,以便任何未来事件发生在顶部,其次是所有事件都是过去的事件,然后是没有任何集会或事件与之相关的事件。
以下尝试导致:System.ArgumentException:DbSortClause 表达式必须具有可比较顺序的类型 - 错误;)
return context.Events.Where(x => x.OrganizationId == id).
Include(x => x.EventRallies).
Include(x => x.EventRallies.Select(e => e.EventOccasions)).
OrderBy(x => x.EventRallies.OrderByDescending(d=>d.EventOccasions.FirstOrDefault().Date)).ToList();
有什么建议吗?
您需要 SelectMany
才能获得一个 Event
的所有 EventOccasion
的列表。 Select 他们的约会对象。该列表可以按日期(降序)排序。此列表中的第一个日期是事件的排序键。
如果您按此日期键降序排列,则未来的事件将排在第一位,然后是过去的事件,然后是没有任何场合的事件。
context.Events.Where(x => x.OrganizationId == id)
.Include(x => x.EventRallies)
.Include(x => x.EventRallies.Select(e => e.EventOccasions))
.OrderByDescending(x => x.EventRallies.SelectMany(d => d.EventOccasions)
.Select(occ => occ.Date)
.OrderByDescending(d => d)
.FirstOrDefault()).ToList();
我们有一个 EF6 MVC3 codeFirst 站点。我们的 Events 可能有一组 EventRallies。 EventRallies 可能有 EventOccasions
的集合我想对它们进行排序,以便任何未来事件发生在顶部,其次是所有事件都是过去的事件,然后是没有任何集会或事件与之相关的事件。
以下尝试导致:System.ArgumentException:DbSortClause 表达式必须具有可比较顺序的类型 - 错误;)
return context.Events.Where(x => x.OrganizationId == id).
Include(x => x.EventRallies).
Include(x => x.EventRallies.Select(e => e.EventOccasions)).
OrderBy(x => x.EventRallies.OrderByDescending(d=>d.EventOccasions.FirstOrDefault().Date)).ToList();
有什么建议吗?
您需要 SelectMany
才能获得一个 Event
的所有 EventOccasion
的列表。 Select 他们的约会对象。该列表可以按日期(降序)排序。此列表中的第一个日期是事件的排序键。
如果您按此日期键降序排列,则未来的事件将排在第一位,然后是过去的事件,然后是没有任何场合的事件。
context.Events.Where(x => x.OrganizationId == id) .Include(x => x.EventRallies) .Include(x => x.EventRallies.Select(e => e.EventOccasions)) .OrderByDescending(x => x.EventRallies.SelectMany(d => d.EventOccasions) .Select(occ => occ.Date) .OrderByDescending(d => d) .FirstOrDefault()).ToList();