How to convert between Linq expressions with different return types?
.net, c#, expression-trees, linq, linq-expressions
Solution
You'll need to create a new expression by:
- Using `Expression.Convert` over the source expression's body to create the result's body.
- Using this body and reusing the parameters of the source expression to create the transformed lambda expression with `Expression.Lambda`.
Try this:
Expression<Func<T, object>> source = ...
var resultBody = Expression.Convert(source.Body, typeof(U));
var result = Expression.Lambda<Func<T, U>>(resultBody, source.Parameters);
Problem
I'm having a headache trying to convert the following linq expression. ``` Expression<Func<T, object>> ``` to the following linq expression... ``` Expression<Func<T, U>> ``` In the example above the object is always of type `U`. I know how easy it could to convert/cast between parameter types but I'm not too sure how to cast between return types.