Условное дерево выражений Linq - PullRequest
0 голосов
/ 07 августа 2009

Я хочу выражение Linq, которое динамически компилируется во время выполнения

У меня есть значение, и если значение больше, чем, например, например, 5000 и другое значение> 70, то он должен вернуть константу х еще значение больше, чем, скажем, 5000 и другое значение <70, он возвращает у Как мне создать дерево выражений a> 5000 & b <70, затем d еще a> 5000 & b> 70, затем e

1 Ответ

3 голосов
/ 07 августа 2009

Вы можете использовать лямбда-выражение с троичным оператором (?:).

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);
...