#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 принимает прямой перевод скобок ‘(‘ и ‘)’. Я не смог найти никаких примеров этого при поиске. Спасибо, я протестирую.