结合Func <bool>表达式</bool>

时间:2012-11-23 14:50:05

标签: c# expression-trees

  

可能重复:
  Combining two expressions (Expression<Func<T, bool>>)

我有一个方法,只需要一个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

所以我可以将其传递给上面的方法。

2 个答案:

答案 0 :(得分:8)

您可以创建ExpressionVisitor来组合查询。查看此msdn博客以获取更多信息:Combining Predicates(答案3)。他谈到EF,但你可以在你的情况下使用它

答案 1 :(得分:3)

您可以使用expressions.Any(x =&gt; x.CallMethod)来实现此目标。