Jaydeep Shah Ответов: 2

Дата проверки существует или нет


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

дата начала и дата окончания

если предположим я добавлю 01-06-2018 к 10-06-2018 эту запись

тогда между этими записями больше ничего не может быть добавлено.

предположим, пользователь вводит сейчас 06-06-2018 до 15-06-2018, а затем возвращает false. потому что 06-06-2018 уже зарегистрирован первым.

Что я уже пробовал:

Список lstOffers = db.OfferMasters.Где(Х => У ((Х.OfferStartDate = dtStart) || (х.OfferStartDate &ГТ;= dtEndDate &амп;&амп; х.OfferEndDate = dtStart &амп;&амп; х.OfferEndDate &ЛТ;= dtEndDate)) и усилитель; & х.Метод isactive &амп;&амп; х.RestaurantId == RestaurantId).Список();

Krunal Rohit

Разве так не должно быть? -

Список lstOffers = db.OfferMasters.Где(Х => У ((Х.OfferStartDate == dtStart) || (х.OfferStartDate &ГТ;= dtEndDate &амп;&амп; х.OfferEndDate == dtStart &амп;&амп; х.OfferEndDate &ЛТ;= dtEndDate)) и усилитель; & х.Метод isactive &амп;&амп; х.RestaurantId == RestaurantId).Список();


Следует сравнить начальную и конечную дату.


КР.

2 Ответов

Рейтинг:
2

Richard Deeming

Предположим, вы хотите узнать, есть ли какие-либо предложения, которые перекрывают указанный диапазон дат:

bool anyOverlappingOffers = db.OfferMasters
    .Where(x => x.RestaurantId == RestaurantId && x.IsActive)
    .Any(x => x.OfferStartDate <= dtEndDate && dtStartDate <= x.OfferEndDate);


Рейтинг:
0

Maciej Los

Прежде всего, я бы посоветовал прочитать вот это: Библиотека временных периодов для .NET[^], потому что это может помочь вам в понимании взаимосвязи между двумя периодами времени...

Согласно вашему требованию, ваш StartDate должны быть больше, чем Max(OfferEndDate) Другими словами, если StartDate меньше Max(OfferEndDate) ваш метод должен вернуться false.