Come posso combinare due espressioni lambda in una utilizzando un OR?Espressioni lambda e come combinarle?
Ho provato quanto segue ma loro fusione mi obbliga a passare parametri nelle Expression.Invoke chiede tuttavia voglio che il valore passato nella nuova lambda da passare su ogni bambino-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);
Qualche idea su come combinare due espressioni lambda in una e avere gli argomenti del figlio lambda è quella del genitore?
Quando dici "combinare", cosa vuoi veramente che succeda? Dite che l'argomento passato è '7' -' func1' restituirà true, e 'func2' restituirà false. Cosa vuoi che la combinazione restituisca? –