条件Linq表达式树

时间:2009-08-07 13:14:29

标签: linq expression-trees

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

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

1 个答案:

答案 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);