0 votes

Arbre d'expansion Linq

Je veux une expression Linq qui se compile dynamiquement au moment de l'exécution.

J'ai une valeur et si cette valeur est supérieure à, par exemple, 5000 et qu'une autre valeur est supérieure à 70, le système doit renvoyer une constante x. sinon si la valeur est supérieure à, disons, 5000 et qu'une autre valeur est inférieure à 70, il faut renvoyer y. Comment créer un arbre d'expression a > 5000 & b < 70 then d sinon a > 5000 & b >70 then e

3voto

dahlbyk Points 24897

Vous pouvez utiliser une expression lambda avec l'opérateur ternaire (? :).

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X