пусть будет:
Expression<Func<Message, bool>> exp1 = x => x.mesID == 1;
Expression<Func<MessageDTO, bool>> exp2 = x => x.mesID == 1;
теперь мне нужно передать exp1 в _db.Messages.where(exp1);
проблема в том, что у меня есть только exp2, мне нужно преобразовать тип в Message, все свойства одинаковы!
теперь я делаю это:
var par = Expression.Parameter(typeof(Message));
var ex = (Expression<Func<Message, bool>>)Expression.Lambda(exp2.Body, par);
проблема с этим заключается в изменении входного параметра да! но x внутри тела лямбда "x.mesID" имеет старый тип.
любой способ изменить все типы параметров в теле тоже или изменить входной параметр в прочь, он отражает тело тоже?
Я думаю, что это большая проблема, с которой я всегда сталкиваюсь с LINQ, поскольку между слоями я не могу передать сгенерированные классы, так как это приведет к соединению слоев, поэтому мне нужно сделать классы с малым весом, теперь как я могу использовать метод, подобный _db.Messages.where(); из busiess слой?!! в то время как уровень busniess ничего не знает о типе сообщения, он знает только MessageDTO.