编译需要参数的表达式

Tim*_*vis 4 linq expression-trees

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

我有一个简单的BinaryExpression(greaterthan),左边是一个ParameterExpression,右边是一个ConstantExpression我想把这个表达式编译成一个func,我可以调用并传递一个参数给...

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

bool result = func(myValue);
Run Code Online (Sandbox Code Playgroud)

感谢哈桑,我根据自己的需要修改了答案......

var func = Expression.Lambda<Func<int,bool>>(myExpr, (ParameterExpression)myExpr.left).Compile();
Run Code Online (Sandbox Code Playgroud)

Muh*_*han 7

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));
Run Code Online (Sandbox Code Playgroud)