I'm having a headache trying to convert the following linq expression.
to the following linq expression...
In the example above the object is always of type
I know how easy it could to convert/cast between parameter types but I'm not too sure how to cast between return types.
You'll need to create a new expression by:
Expression.Convertover the source expression's body to create the result's body.
Expression<Func<T, object>> source = ... var resultBody = Expression.Convert(source.Body, typeof(U)); var result = Expression.Lambda<Func<T, U>>(resultBody, source.Parameters);
My case was converting interface input type to the concrete type for my MongoDB generic repository.
I was converting from
Expression<Func<TIModel, bool>> iFilter
Expression<Func<TModel, bool>> filter
I just inspired from Ani's answer and converted like:
var filter = Expression.Lambda<Func<TModel, bool>>(iFilter.Body, iFilter.Parameters);