Проверка времени C #, если время доступно в доступных диапазонах - PullRequest
0 голосов
/ 30 октября 2019

Я создаю простое приложение для бронирования комнат собраний. Я хочу написать запрос на объектную структуру, чтобы проверить, является ли данный временной интервал действительным, чтобы не было перекрытия с уже существующими временными интервалами.

, например, для: если уже есть доступные заказы, например, для;в указанный день 10:00 - 14:00 и 15:00 - 17:00. Эти два слота доступны. Если я попытаюсь забронировать новый слот на 10:00 - 12:00 или 09:00 - 11:00, он не должен позволять. Вот мой запрос

public bool SlotAvailable(Item item) {
var result =  _context.bookings
.where(booking=>
    (item.StartTime >= booking.StartTime && item.StartTime <= booking.EndTime) ||
                                                (item.EndTime >= booking.StartTime && item.EndTime <= booking.EndTime);

return result.Any();
}

Это правильный и эффективный запрос? Кто-нибудь может помочь с этим?

Спасибо

1 Ответ

0 голосов
/ 30 октября 2019

Что вам нужно сделать, это проверить наличие совпадений. Это можно сделать с помощью item.StartTime < booking.EndTime && item.EndTime > booking.StartTime, в котором, в основном, говорится, что если ваш товар начинается до того, как заканчивается бронирование, и заканчивается после того, как бронирование началось, то есть совпадение. Затем вам нужно только определить, существует ли хотя бы один из этих

public bool SlotAvailable(Item item) 
{
    return !_context.bookings
        .Any(booking => 
            item.StartTime < booking.EndTime 
            && item.EndTime > booking.StartTime);
}

. Это определит наличие перекрывающихся бронирований и приведет к наименьшему количеству данных, возвращаемых из БД.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...