ToUpper() in an Expression.Call

.net, c#, linq

Solution

Just add an `Expression.Call`:

var predicate =
    Expression.Lambda<Func<T, bool>>(
        Expression.Call(
            Expression.Call( // <=== this one is new
                Expression.PropertyOrField(parameter, "FirstName"),
                "ToUpper", null),
            "Contains", null,
            Expression.Constant("myvalue".ToUpper())), parameter
        );

which then reports itself as:

Param_0 => Param_0.FirstName.ToUpper().Contains("MYVALUE")

Problem

The code below work, but I'd like introduce a `ToUpper()` ``` var predicate = Expression.Lambda<Func<T, bool>>( Expression.Call( Expression.PropertyOrField(parameter, "FirstName"), "Contains", null, Expression.Constant("myvalue".ToUpper())), parameter ); ``` The result is : ``` {Param_0 => Param_0.FirstName.Contains("MYVALUE")} ``` But I'd like this : ``` {Param_0 => Param_0.FirstName.ToUpper().Contains("MYVALUE")} ``` How can I change ?

Original source

Related problems