Làm cách nào để kết hợp hai biểu thức lambda thành một bằng cách sử dụng OR?Biểu thức Lambda và cách kết hợp chúng?
Tôi đã thử những điều sau đây nhưng việc sáp nhập họ đòi hỏi tôi phải vượt qua các thông số vào Expression.Invoke cuộc gọi, tuy nhiên tôi muốn giá trị chuyển vào lambda mới được thông qua vào mỗi đứa trẻ-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);
Bất kỳ ý tưởng nào về cách kết hợp hai biểu thức lambda thành một và có đối số của lambdas con là của cha mẹ?
Khi bạn nói "kết hợp", bạn thực sự muốn điều gì xảy ra? Giả sử đối số được truyền là '7' -' func1' sẽ trả về true và 'func2' sẽ trả về false. Bạn muốn kết hợp trở lại như thế nào? –