#c# #linq
#c# #linq
Вопрос:
У меня есть проект, который основан на исследовании даты между двумя периодами.
Все идет хорошо, за исключением трех случаев.
Первый случай: если конец периода не указан в базе данных .
Второй случай: если дата окончания периода не указана в поиске .
Третий случай: если период не имеет конца, и поиск не указал дату окончания для периода.
Пример: В базе данных период с: (2020-09-25) не имеет конца:
В окне поиска периодов мы оставляем дату окончания периода пустой
Я использовал этот код, чтобы обойти проблему, но этот код непрактичен и может вызвать проблемы в будущем, поскольку я добавляю 100 лет к дате начала бесконечного периода.
List<Tax_Value> g = (
from i in Tax.Tax_Value
.Where
(L =>
L.End_Date.HasValue?
L.End_Date >= this.Start_Date.ToDate : this.Start_Date.ToDate.Value.AddYears(100) >= this.Start_Date.ToDate
amp;
this.End_Date.ToDate.HasValue ?
L.Start_Date <= this.End_Date.ToDate : L.Start_Date <= this.Start_Date.ToDate.Value.AddYears(100))
select i).ToList();
Обновить :
Есть некоторые даты, которые выдают ошибки, например:
Начало периода меньше даты начала поиска для периода, поэтому период не отображается.
Поиск заключается в извлечении всех периодов между двумя датами, отмечая, что у некоторых периодов дата начала меньше даты начала поиска для периода
Ответ №1:
Вы можете заменить 100 лет на true
List<Tax_Value> g = (
from i in Tax.Tax_Value
.Where(L =>
(L.End_Date.HasValue amp;amp; this.End_Date.ToDate.HasValue ?
L.End_Date <= this.End_Date.ToDate : true)
amp;amp;
(L.Start_Date.HasValue amp;amp; this.Start_Date.ToDate.HasValue ?
L.Start_Date >= this.Start_Date.ToDate : true)
amp;amp;
(L.End_Date.HasValue amp;amp; this.Start_Date.ToDate.HasValue ?
L.End_Date > this.Start_Date.ToDate : true)
amp;amp;
(L.Start_Date.HasValue amp;amp; this.End_Date.ToDate.HasValue ?
L.Start_Date < this.End_Date.ToDate : true)
select i).ToList();
Также узнайте разницу между amp;
и amp;amp;
.
Комментарии:
1. Спасибо, брат, за твое внимание, но есть проблема, когда в области поиска появляются точки.
2. @EbrahemAlabdaly какой-нибудь пример?