0

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

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

4

1 回答 1

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);
于 2009-08-07T13:50:24.743 回答