条件Linq表达式树

条件Linq表达式树,linq,expression-trees,Linq,Expression Trees,我想要一个在运行时动态编译的Linq表达式 我有一个值,如果大于5000,另一个值大于70,那么它应该返回一个常数x 其他的 值大于5000,另一个值小于70,则返回y 如何创建表达式树 a>5000,b5000&b>70,然后e可以将lambda表达式与三元运算符(?:)一起使用 vard=1; 变量e=2; var f=3; 表情= (a,b)=>(a>5000和&b5000和b>70)?e: f、 //如果b==70 var func=expression.Compile(); var-v

我想要一个在运行时动态编译的Linq表达式

我有一个值,如果大于5000,另一个值大于70,那么它应该返回一个常数x 其他的 值大于5000,另一个值小于70,则返回y 如何创建表达式树 a>5000,b<70,然后d 其他的
a>5000&b>70,然后e

可以将lambda表达式与三元运算符(?:)一起使用

vard=1;
变量e=2;
var f=3;
表情=
(a,b)=>(a>5000和&b<70)?d:
(a>5000和b>70)?e:
f、 //如果b==70
var func=expression.Compile();
var-val=func(5432,1);

可以将lambda表达式与三元运算符(?:)一起使用

vard=1;
变量e=2;
var f=3;
表情=
(a,b)=>(a>5000和&b<70)?d:
(a>5000和b>70)?e:
f、 //如果b==70
var func=expression.Compile();
var-val=func(5432,1);

我们可以进一步将a>5000和b<70分解成更多的表达式吗?如果是,你是什么意思?整个lambda将在编译时转换为表达式树-在Reflector中打开,以查看它到底生成了什么。我们可以进一步将a>5000&&b<70分解为更多的表达式吗?如果是,你是什么意思?整个lambda将在编译时转换为一个表达式树——在Reflector中打开,以查看它到底生成了什么。
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);