免责声明:我已经使用 System.Linq.Expressions 中的表达式解决了这个问题,但我仍在寻找更好/更简单的方法。
考虑以下情况:
var query =
from c in db.Customers
where (c.ContactFirstName.Contains("BlackListed") ||
c.ContactLastName.Contains("BlackListed") ||
c.Address.Contains("BlackListed"))
select c;
需要对照列入黑名单的术语检查的列/属性仅在运行时对我可用。如何生成此动态 where 子句?
另一个复杂情况是 Queryable 集合(上面的 db.Customers)被输入到基类“Customer”(比如“Person”)的 Queryable 中,因此不能像上面那样编写 c.Address。