我已经看到可以将编译的方法一起添加。
Expression<Func<Customer, bool>> ln = c => c.lastname.Equals(_customer.lastName, StringComparison.InvariantCultureIgnoreCase);
Expression<Func<Customer, bool>> fn = c => c.firstname.Equals(_customer.firstName, StringComparison.InvariantCultureIgnoreCase);
Expression<Func<Customer, bool>> fdob = c => c.DOB.ToString("yyyyMMdd").Equals(_customer.DOB.ToString("yyyyMMdd"));
var filter = ln.Compile() + fn.Compile() + fdob.Compile();
这样做有意义吗?
我打算使用过滤器代替 lambda 表达式来过滤客户存储库:
IEnumerable<Customer> customersFound = _repo.Customers.Where(filter);
根据业务逻辑,我可能会也可能不会将三个编译方法添加在一起,但会选择并可能会添加更多编译方法。
谁能解释将它们加在一起是否会建立一个查询字符串?有人有更好的建议吗?
我可以链接“Where”语句并使用常规 lambda 表达式,但我对编译方法并将它们相加可能获得的东西很感兴趣!