Nếu tôi có một biểu hiện của một đại biểu chức năng mà phải mất một số thông số như sau:Giảm một biểu thức bằng cách nhập một tham số
Expression<Func<int, int, int, bool>> test = (num1, num2, num3) => num1 + num2 == num3;
là có một chiều/làm thế nào tôi có thể thay thế một trong những giá trị (nói 5 cho num1
) và nhận được sự biểu hiện tương đương với:
Expression<Func<int, int, bool>> test = (num2, num3) => 5 + num2 == num3;
EDIT:
Ngoài ra cần phải giải quyết các loại phức tạp, ví dụ:
Expression<Func<Thing, int, int>> test = (thing, num2) => thing.AnIntProp + num2;
bản sao có thể có của [C# Linq vs. Currying] (http://stackoverflow.com/questions/8826266/c-sharp-linq-vs-currying) –
trong khi tôi đã bỏ phiếu là trùng lặp, câu hỏi này thực sự có thể khác . Có lẽ bạn đang tìm kiếm cách sử dụng biểu thức khách truy cập để thay thế đối số với giá trị? (một cái gì đó dọc theo dòng [this] (http://stackoverflow.com/questions/11164009/using-a-linq-expressionvisitor-to-replace-primitive-parameters-with-property-ref)) –
Không hoàn toàn. Tôi muốn được làm việc với các biểu thức. Tôi nghĩ rằng nó gần gũi hơn với [this] (http://stackoverflow.com/questions/11159697/replace-parameter-in-lambda-expression) hoặc [this] (http://stackoverflow.com/questions/5631070/currying -expressions-in-c-sharp) –