我想知道是否有人可以帮助我?我正试图阻止房间预订系统中的事件重叠。每个事件都有开始日期/时间和结束日期/时间。我想要发生的是,如果用户试图在事件已经存在的时间之间预订事件,那么它应该出错。
因此,例如以下内容应该是错误的,因为它们重叠: -
Event 1:
- Start Date/Time: 10/08/2012 09:00
- End Date/Time: 10/08/2012 11:00
Event 2:
- Start Date/Time: 10/08/2012 10:00
- End Date/Time: 10/08/2012 12:00
我正在使用MVC和实体框架,因此Linq解决方案更可取。
非常感谢任何帮助:)
答案 0 :(得分:3)
你的意思是这样的:
new List<Event>()
{
new Event() { StartsAt = DateTime.Now.AddHours(-1), EndsAt = DateTime.Now.AddHours(1) }
};
Event newEvent = new Event() { StartsAt = DateTime.Now.AddHours(-3), EndsAt = DateTime.Now.AddHours(-2) };
bool newEventBookable = !existingsEvents.Any(x => x.StartsAt <= newEvent.EndsAt && x.EndsAt >= newEvent.StartsAt);
如果newEventBookable为false,则可以抛出错误。
我认为这种逻辑适用于先前,后续,重叠和包含的事件 - 但我很快就会发现它是不是!