Я работаю над программой, в которой хранится список физических рекламных роликов и их оговорок (диапазон дат). Программа должна иметь возможность находить «открытые точки» для объявлений в категории объявлений.Выбор элементов, которые не находятся в другой таблице, или не находятся в заданном диапазоне дат
У меня есть три таблицы: AdTypes, AdPlaces и бронирование. В настоящее время я реализую запрос, который ищет резервирование, когда даты не сталкиваются с диапазоном дат, выбранным пользователем, и возвращает элементы AdType в виде списка. Этот метод работает, если каждый AdType имеет оговорку в какой-то момент, но он не отображает AdTypes, которые не найдены в таблице Reservations.
Фильтрация осуществляется в PreProcessQuery-запросе AdTypes, как таковые:
query = query.Where(r => r.Reservations.Any(res => (res.Begindate > Begindate && Enddate < res.Enddate) || (res.Enddate < Begindate && Enddate > res.Begindate)));
Как можно «продлить» запрос таким образом, чтобы все те AdTypes, которые имеют никаких оговорок не будут перечислены вместе с «истекли» AdType оговорок?
Не связанный с мясом вашего вопроса, но я думаю, что ваш запрос на получение даты требует некоторой работы. Четвертое сравнение всегда верно, если третье сравнение истинно, и первые два сравнения тоже не имеют большого смысла. Если вы ищете «res» не перекрывает основной период вообще, вам просто нужно «res.Enddate
Rawling
, пожалуйста, покажите основные отношения между таблицами –