EF Core - добавить условное где на основе значения поля - PullRequest
0 голосов
/ 31 декабря 2018

Я хотел бы добавить дополнительные предложения where в мой запрос на основе значения поля a (dateType)

  • если dateType = 1 then (StartDate <= Now && EndDate => Now) // определенный диапазон дат
  • , если dateType = 2 затем (Period => Now.Month && Year => Now.Year) // month
  • если dateType = 3 затем (Period =>Сейчас. Месяц / 4) // квартал

Я пробовал троичный оператор, но он не работает, вот начало моего запроса.

        var query = from e in context.Events
            join c in context.EventCategories on e.CategoryId equals c.CategoryId
            join o in context.Owners on e.OwnerId equals o.OwnerId
            where !e.IsDeleted 
                  && (e.DateType == 1 ? (e.StartDateTimeUtc <= DateTime.UtcNow && e.EndDateTimeUtc =>DateTime.UtcNow))

с использованием EF Core 2.2

1 Ответ

0 голосов
/ 31 декабря 2018

Окончательный ответ благодаря Герту Арнольду, предоставившему направление в комментариях к ОП

    var query = from e in context.Events
                    join c in context.EventCategories on e.CategoryId equals c.CategoryId
                    join o in context.Owners on e.OwnerId equals o.OwnerId
                    where !e.IsDeleted && (e.DateType == 1 && e.StartDateTimeUtc <= DateTime.UtcNow && e.EndDateTimeUtc >= DateTime.UtcNow) //specific date
                                           || (e.DateType == 2 && e.Period >= DateTime.UtcNow.Month && e.Year >= DateTime.UtcNow.Year) // month
                                           || (e.DateType == 3 && e.Period >= DateTime.UtcNow.Month / 3 && e.Year >= DateTime.UtcNow.Year) //quarter
...