我试图找出 2 个对象是否DateTime
与其他 2 个DateTime
对象相互接触/重叠。
我正在尝试检查很多案例。但我想知道是否有任何有效的方法可以不同地做到这一点?LINQ
也许是一个扩展?
public IQueryable<Appointment> GetAllAppointments(DateTime startTime, DateTime endTime)
{
return _dbContext.Appointment.Where(x => x.Appointment.StartTime <= startTime && x.Appointment.EndTime >= endTime && x.Appointment.StartTime <= endTime && x.Appointment.EndTime <= startTime
|| x.Appointment.StartTime >= startTime && x.Appointment.EndTime <= endTime && x.Appointment.StartTime <= endTime && x.Appointment.EndTime <= startTime
|| x.Appointment.StartTime == startTime && x.Appointment.EndTime == endTime && x.Appointment.StartTime <= endTime && x.Appointment.EndTime <= startTime
|| x.Appointment.StartTime >= startTime && x.Appointment.EndTime >= endTime
|| x.Appointment.StartTime <= startTime && x.Appointment.EndTime >= endTime);
}
约会不应该相互“接触”。约会结束时,下一个开始约会不应在上一个日期和时间结束的日期和时间开始。