1

我想知道是否有人可以帮助我?我试图防止事件在房间预订系统中重叠。每个事件都有一个开始日期/时间和一个结束日期/时间。我想要发生的是,如果用户尝试在已经存在的事件之间预订事件,它应该会出错。

因此,例如,以下内容重叠时应该出错:-

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 解决方案。

任何帮助将非常感激 :)

4

1 回答 1

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,您就可以抛出错误。

我认为这个逻辑对于之前的、后续的、重叠的和包含的事件是可以的——但我很快就会发现它是否不是!

于 2012-08-10T11:01:48.387 回答