Comment combiner deux expressions lambda en une en utilisant un OU?Expressions lambda et comment les combiner?
Je l'ai essayé ce qui suit, mais leur fusion me demande de passer des paramètres dans les Expression.Invoke appels, mais je veux que la valeur passée dans le nouveau lambda à passer sur chaque enfant lambda ..
Expression<Func<int, bool>> func1 = (x) => x > 5;
Expression<Func<int, bool>> func2 = (x) => x < 0;
//Combines the lambdas but result in runtime error saying I need to pass in arguments
//However I want the argument passed into each child lambda to be whatever is passed into the new main lambda
Expression<Func<int, bool>> lambda = Expression.Lambda<Func<int, bool>>(Expression.Or(Expression.Invoke(func1), Expression.Invoke(func2)));
//The 9 should be passed into the new lambda and into both child lambdas
bool tst = lambda.Compile().Invoke(9);
Des idées comment combiner deux expressions lambda en une et avoir les arguments de l'enfant lambdas être celui du parent?
Quand vous dites «combiner», qu'est-ce que vous voulez vraiment que ce soit? Dites que l'argument passé est '7' -' func1' retournera vrai, et 'func2' retournera false. Que voulez-vous que la combinaison retourne? –