0
我想要一个在运行时动态编译的Linq表达式有条件的Linq表达式树
我有一个值,如果比值大于例如5000和另一个值> 70,那么它应该返回一个常量X 其他 值大于说5000和另一个值< 70它返回y 如何创建一个表达式树 一个> 5000 & b < 70天,然后 其他 a> 5000 & b> 70然后e
我想要一个在运行时动态编译的Linq表达式有条件的Linq表达式树
我有一个值,如果比值大于例如5000和另一个值> 70,那么它应该返回一个常量X 其他 值大于说5000和另一个值< 70它返回y 如何创建一个表达式树 一个> 5000 & b < 70天,然后 其他 a> 5000 & b> 70然后e
您可以对三元运算符(?:)使用lambda表达式。
var d = 1;
var e = 2;
var f = 3;
Expression<Func<int,int,int>> expression =
(a, b) => (a > 5000 && b < 70) ? d :
(a > 5000 && b > 70) ? e :
f; // If b == 70
var func = expression.Compile();
var val = func(5432, 1);
我们是否可以进一步将a> 5000 && b <70转换成更多的表达式?如果是这样? – chugh97 2009-08-07 14:08:17
你是什么意思?整个lambda将在编译时转换为表达式树 - 在Reflector中打开以查看它产生的内容。 – dahlbyk 2009-08-07 15:35:53