2011-10-10 45 views
4

好吧,我相信这很简单,但我有一个高级时刻。编译表达式,需要一个参数

我有一个简单的BinaryExpression(GREATERTHAN)左侧是一个ParameterExpression,右侧是一个常量表达式我想编译这个表达,我可以打电话和参数传递给函数求...

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

bool result = func(myValue); 

感谢哈桑,我修改了他的答案,我需要......

var func = Expression.Lambda<Func<int,bool>>(myExpr, (ParameterExpression)myExpr.left).Compile(); 

回答

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)); 
+0

感谢。在我的情况下,我已经有了BinaryExpression,所以我不需要创建它....但我所缺少的是将参数传递到lambda方法的要求.... –