5

可能重复:
组合两个表达式(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

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

4

2 回答 2

8

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

于 2012-11-23T15:51:59.293 回答
3

您可以使用 expression.Any(x => x.CallMethod) 来实现此目标。

于 2012-11-23T14:56:05.267 回答