首页 > 解决方案 > 将两个表达式组合在一起?

问题描述

我正在构建一个将字符串转换为 lambda 表达式的应用程序。例如,如果输入是一个类似的字符串"c.id>7 && c.grade<5",我应该把它翻译成c=>c.id>7 && c.grade<5;如果输入是字符串"c.id>7 && u.grade<5",我应该把它翻译成(c,u)=>c.id>7 && u.grade<5.

我已经构建了一个应用程序来识别字符串"c.id>7 && c.grade<5",并将其转换为两个表达式c=>c.id>7c=>c.grade<5. 但是当我尝试将这两个表达式组合在一起时,如下所示:

// expression1 is c=>c.id>7, expression1 is return by method Expression.Lambda
// expression2 is c=>c.grade<5 or u.grade<5, expression2 is return by method Expression.Lambda
Expression.AndAlso(expression1, expression2);

系统说

there is no binary opertor AndAlso between System.Func`2[Test.user, System.Boolean] and System.Func`2[Test.user, System.Boolean]

那么谁能帮我把这两个表达式结合起来,谢谢!

ps:

// expression1 and expression2 is built like below    
Expression expression = Expression.Lambda(Expression.AndAlso(leftExpression, rightExpression), parameterExpressions.ToArray());

标签: c#expression

解决方案


推荐阅读