【发布时间】:2020-02-21 04:41:25
【问题描述】:
我有一个很长的 sql,其中有多个 where 条件。我希望只有在传递的值不为 null 时才考虑 where 条件
灵巧
from b in _context.customer
join d in _context.Address on b.id equals d.Id
join e in _context.units on d.Id equals e.Id
where e.unitNumber == valueProvided)
select new modelAddress
{
address= address
}
提供的值可以为空,因此我希望 where 条件不考虑 e.unitNumber。另外这只是一个例子,实际查询量很大
【问题讨论】:
-
罗伯特的答案是正确的。您可能不喜欢它,但通过提取条件应用程序以便在将条件传递给 SQL 之前完成检查,确保了最佳查询。另一种方法是为每个可为空的条件添加类似
where e.unitNumber = (valueProvided != null ? valueProvided : e.UnitNumber)的条件。这会将这些条件传递给 SQL 来解决,从而减慢查询速度。仅仅因为你不同意他们就拒绝回答尝试是很糟糕的形式。
标签: sql entity-framework linq