2011-10-10 88 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方法的要求.... –