首页 / 问答 / C#/.NET/.NET Core编程开发中如何将两个或者多个lambda表达式连接在一起呢?

C#/.NET/.NET Core编程开发中如何将两个或者多个lambda表达式连接在一起呢?

.NET C# Linq .NET Core Lambda 2.67K 次浏览
0

在C#/.NET的应用程序编程开发中,现在有两个lambda表达式(Expression<Func<T,bool>>),如何将这两个lambda表达式使用OR或者AND连接成一个表达式呢?

示例如下:

Expression<Func<T, bool>> expr1;
Expression<Func<T, bool>> expr2;

// 如何实现如下的连接
Expression<Func<T, bool>> andExpression = expr AND expr2
回复 [×]
提交评论
请输入评论内容

2 个回答

  • 1

    创建一个表达式构造器帮助类PredicateBuilder,如下:

    Rector的个人主页

    Rector

    2020-01-26 回答

    • 0

      在C#/.NET/.NET Core的应用程序编程开发中,可以使用Expression.AndAlso或者Expression.OrElse来连接两个lambda表达式,如果两个表达式的参数相同,AND连接两个表达式的实现如下:

      或者实现一个Not连接,如下:

      或者也可以调用Expression.Invoke()方法来连接两个表达式,如下:

      从.NET 4.0开始,你也可以使用ExpressionVisitor来实现,如下:

      Rector的个人主页

      Rector

      2020-01-26 回答

      我来回答