Linq 编译需要参数的表达式

Linq 编译需要参数的表达式,linq,expression-trees,Linq,Expression Trees,好的,我相信这很简单,但我有一个高级时刻 我有一个简单的二进制表达式(大于),左边是ParameterExpression,右边是ConstantExpression,我想把这个表达式编译成一个func,我可以调用它并将参数传递给它 var func = ...something with my exp.... bool result = func(myValue); 多亏了哈桑,我根据自己的需要修改了他的答案 var func = Expression.Lambda<Func<

好的,我相信这很简单,但我有一个高级时刻

我有一个简单的二进制表达式(大于),左边是ParameterExpression,右边是ConstantExpression,我想把这个表达式编译成一个func,我可以调用它并将参数传递给它

var func = ...something with my exp....

bool result = func(myValue);
多亏了哈桑,我根据自己的需要修改了他的答案

var func = Expression.Lambda<Func<int,bool>>(myExpr, (ParameterExpression)myExpr.left).Compile();
var func=Expression.Lambda(myExpr,(ParameterExpression)myExpr.left).Compile();
var param=Expression.Parameter(typeof(int));
var值=表达式常数(3);
var body=表达式.GreaterThan(参数,值);
var checkValue=Expression.Lambda(body,param.Compile();
控制台写入线(校验值(4));
控制台写入线(校验值(2));

谢谢。在我的例子中,我已经有了BinaryExpression,所以我不需要创建它……但是我缺少的是将参数传递到lambda方法中的要求。。。。
var param = Expression.Parameter(typeof(int));
var value = Expression.Constant(3);
var body = Expression.GreaterThan(param, value);
var checkValue = Expression.Lambda<Func<int, bool>>(body, param).Compile();

Console.WriteLine(checkValue(4));
Console.WriteLine(checkValue(2));