Stuck with BinaryExpression in C#
c#, expression-trees
Solution
I think you just need:
Expression<Func<int, int, int>> Lam =
Expression.Lambda<Func<int, int, int>>(Cond, // <=== HERE
new ParameterExpression[] { LeftEx, RightEx });
edit - btw - `var` is your friend here:
var p1 = Expression.Parameter(typeof(int), "p1");
var p2 = Expression.Parameter(typeof(int), "p2");
var body = Expression.Condition(Expression.GreaterThan(p1, p2), p1, p2);
var lambda = Expression.Lambda<Func<int, int, int>>(body, p1, p2);
var func = lambda.Compile();
Console.WriteLine(func(333,1200));
Console.WriteLine(func(1200,333));
Problem
I want to implement ``` Expression<Func<int, int, int>> Max = (p1,p2) => p1 > p2 ? p1:p2; ``` as an expression tree and tried ``` ParameterExpression LeftEx = Expression.Parameter(typeof(int), "p1"); ParameterExpression RightEx = Expression.Parameter(typeof(int), "p2"); BinaryExpression GroesserAls = Expression.GreaterThan(LeftEx, RightEx); ConditionalExpression Cond = BinaryExpression.Condition(GroesserAls, LeftEx, RightEx); Expression main = Cond.Test; Expression<Func<int, int, bool>> Lam = Expression.Lambda<Func<int, int, bool>>(main, new ParameterExpression[] { LeftEx, RightEx }); Console.WriteLine(Lam.Compile().Invoke(333, 1200)); ``` With Cond I either get true/false but not the LeftEx or RightEx that Condition should return. I couldn't find anything in the documentation. peter