我想要一个在运行时动态编译的Linq表达式
我有一个值,如果值大于例如5000和另一个值&gt;那么它应该返回一个常数x 其他 大于5000的值和另一个值< 70它返回y 如何创建表达式树 a&gt; 5000&amp; b&lt; 70然后d 其他 a&gt; 5000&amp; b> 70然后e
答案 0 :(得分:3)
您可以将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);