Entity Framework Core 3.1.3 (PostgreSQL) Создание запроса PostgreSQL с использованием (И ИЛИ)

#c# #sql #postgresql #entity-framework-core

#c# #sql #postgresql #entity-framework-core

Вопрос:

У меня есть следующий запрос ядра EF:

         var instancesForCustomer = (from v in loyalty.VoucherAuthentication
                                    where v.CardNumber == cardNumber
                                    amp;amp; v.InstanceType == instanceType
                                    amp;amp; v.PreAuthorised == false
                                    amp;amp; v.Redeemed == false 
                                    amp;amp; v.VoucherExpiryDate > Functions.GenerateDateTimeByLocale()
                                    amp;amp; v.PreAuthExpiryDate > Functions.GenerateDateTimeByLocale()
                                    select v).AsNoTracking().ToArray();
  

Однако я хотел бы, чтобы запрос содержал следующее условие, а не просто:

 *WHERE PreAuthExpiry > Now*
  

Чтобы быть

 *WHERE (PreAuthExpiry > Now OR PreAuthExpiry IS NULL)* 
  

Мне неясно, как создать запрос так, чтобы > Now и IS NULL рассматривались в их собственном блоке, вместо того, чтобы оценивать все предыдущие условия по отношению к PreAuthExpiry > Now или IS NULL . Если это просто ИЛИ PreAuthExpiry РАВНО NULL, то все записи с NULL PreAuthExpiry вернутся, игнорируя другие условия И.

Комментарии:

1. amp;amp; (v.PreAuthExpiryDate == null || v.PreAuthExpiryDate > Functions.GenerateDateTimeByLocale())

2. Ах, спасибо вам, mjwills! Я не понимал, что ef core принимает прямой перевод скобок ‘(‘ и ‘)’. Я не смог найти никаких примеров этого при поиске. Спасибо, я протестирую.