我有这些对象:
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;}
}
我当前的查询看起来像这样,但我得到了这个例外:至少有一个对象必须实现IComparable。:
Repository
.Get(c => c.Schedules.Any(s => s.DayOfTheWeekTypeId == dayOfTheWeekId))
.OrderBy(e => e.Schedules.OrderBy(s => s.StartDateTime)).ToList()
当我设定时间时我总是在同一天使用,因为我需要在一周的某些日子里上课。这就是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
}
更新:
考虑到这一点,我想我可能想要分组......
答案 0 :(得分:7)
您正尝试按序列订购。这甚至意味着什么?
按照时间表中的最早事件排序更有意义:
.OrderBy(e => e.Schedules.Min(s => s.StartDateTime))
我不知道这是否会工作,但它至少更有意义。 (它可以在LINQ to Objects中使用。虽然我不知道EF。)