Я пытаюсь преобразовать параметр выражения, который использует общий тип для другого типа. Довольно просто - у меня есть модели представлений, открытые через контроллеры web-api - и когда требуется поиск (запрос) для объектов домена - мне нужно преобразовать выражение с использованием типов TViewModel в типы TModel.Преобразование выражения с общим типом в общий тип
Что-то вроде этого:
protected static Expression<Func<TModel, bool>> Convert(Expression<Func<TViewModel, bool>> expression)
{
//This works - but obviously is limited to properties on the TModel = Id.
//How do I make this such that I can take all of the expression parameters from the signature
//and convert it to an expression of Func<TModel,bool>>
var param = Expression.Parameter(typeof(TModel), "p");
var len = Expression.PropertyOrField(param, "Id");
var exp = Expression.Lambda<Func<TModel, bool>>(expression.Body, param);
return exp;
}