按子集合的子属性对LINQ查询进行排序?

DDi*_*ita 3 linq entity-framework entity-framework-4.1

我有这些对象:

public class Class
{
     public Guid Id {get;set;}
     public string Name {get;set;}
     public virtual ICollection<Schedule> Schedules{get;set;}
}

public class Schedule
{
     public Guid Id {get;set;}
     public virtual DayOfTheWeekId {get;set;}
     public virtual DayOfTheWeek {get;set;}
     public DateTime StartTime {get;set;}
     public DateTime EndTime {get;set;}
}
Run Code Online (Sandbox Code Playgroud)

我当前的查询看起来像这样,但是我得到了这个例外:至少有一个对象必须实现IComparable.:

    Repository
.Get(c => c.Schedules.Any(s => s.DayOfTheWeekTypeId == dayOfTheWeekId))
.OrderBy(e => e.Schedules.OrderBy(s => s.StartDateTime)).ToList()
Run Code Online (Sandbox Code Playgroud)

当我设定时间时我总是在同一天使用,因为我需要在一周的某些日子里上课.这就是DayOfTheWeek对象发挥作用的地方.这就是我设定时间的方式:

var schedule = new Schedule{
                           StartDateTime = new DateTime(1999,1,1) + new TimeSpan(9, 15, 0),
                           EndDateTime = new DateTime(1999,1,1) + new TimeSpan(9, 15, 0),
                           DayOfTheWeekTypeId = 1
                           }
Run Code Online (Sandbox Code Playgroud)

更新:

考虑到这一点,我想我可能想分组......

Jon*_*eet 7

你想按顺序排序.那有什么意思?

按照时间表中最早的事件排序更有意义:

.OrderBy(e => e.Schedules.Min(s => s.StartDateTime))
Run Code Online (Sandbox Code Playgroud)

我不知道这是否有效,但至少更有意义.(它可以在LINQ to Objects中使用.虽然我不知道EF.)