我有一个方法,只需要一个Expression<Func<bool>>
参数
void MethodOne(Expression<Func<bool>> expression)
我有Expression<Func<bool>>
的多个实例。如何使用Expression<Func<bool>>
将这些表达式动态组合成单个Expression.OrElse
(即构建表达式树)?
例如,如果我有两个表达式,如
() => objectA.PropertyOneIsSet
和
() => objectB.PropertyTwoIsSet
我希望最终结果是:
() => objectA.PropertyOneIsSet || objectB.PropertyTwoIsSet
所以我可以将其传递给上面的方法。
答案 0 :(得分:8)
您可以创建ExpressionVisitor来组合查询。查看此msdn博客以获取更多信息:Combining Predicates(答案3)。他谈到EF,但你可以在你的情况下使用它
答案 1 :(得分:3)
您可以使用expressions.Any(x =&gt; x.CallMethod)来实现此目标。