在整个应用程序的许多不同查询中出现的一组特定标准已经慢慢变得更加复杂。为避免重复此代码,我想将这些条件拆分为一个方法,该方法将条件作为表达式返回,然后可以在必要时应用:
public Expression<Func<Invoice, bool>> GetComplexPredicate()
{
// complex predicate is returned as an Expression:
return c => ...
}
像这样重用:
var result = repository.Invoice.Where(GetComplexPredicate())
但是,下面的语句不会编译,因为c.Invoice只是一个ICollection。
var result = repository.Customer
.Where(c => c.Country == "US" && c.Invoice.Any(GetComplexPredicate()))
是否可以以任何方式使用这样的表达式?