在C#/.NET的应用程序编程开发中,现在有两个lambda表达式(Expression<Func<T,bool>>),如何将这两个lambda表达式使用OR或者AND连接成一个表达式呢?
lambda
Expression<Func<T,bool>>
OR
AND
示例如下:
Expression<Func<T, bool>> expr1; Expression<Func<T, bool>> expr2; // 如何实现如下的连接 Expression<Func<T, bool>> andExpression = expr AND expr2
Rector
2020-01-26 提问
创建一个表达式构造器帮助类PredicateBuilder,如下:
PredicateBuilder
2020-01-26 回答
在C#/.NET/.NET Core的应用程序编程开发中,可以使用Expression.AndAlso或者Expression.OrElse来连接两个lambda表达式,如果两个表达式的参数相同,AND连接两个表达式的实现如下:
Expression.AndAlso
Expression.OrElse
或者实现一个Not连接,如下:
Not
或者也可以调用Expression.Invoke()方法来连接两个表达式,如下:
Expression.Invoke()
从.NET 4.0开始,你也可以使用ExpressionVisitor来实现,如下:
ExpressionVisitor
码龄: 3145天
专注.NET/.NET Core