I try to concatenate 2 lambda expressions that are generated dynamically:
public Expression<Func<User, bool>> Expres(int id)
{
    var argument = Expression.Parameter(typeof(User));
    var left = Expression.Property(argument,"id");
    var right = Expression.Constant(id);
    BinaryExpression binary = Expression.Equal(left, right);
    Expression<Func<User, bool>> exp = Expression.Lambda<Func<User, bool>>(
        binary,
        new[] { argument }
    );
    return exp;
}
Example:
>Expres(255);
Param_0.id == 255
>Expres(10);
Param_0.id == 10
but, when merge them...
>expression = Expression.And(exp1, exp2);
(Param_0.Id == 255) And (Param_1.Id == 10)
>Expression.Lambda<Func<TEntidad, bool>>(expression, new[] { argument });
Param_0 => ((Param_1.Id == 255) And (Param_2.Id == 10)
but it generates more dependencies than required, and the result of what I expected is:
Param_0 => ((Param_0.Id == 255) And (Param_0.Id == 10)
 
    