让那里:
Expression<Func<Message, bool>> exp1 = x => x.mesID == 1;
Expression<Func<MessageDTO, bool>> exp2 = x => x.mesID == 1;
Run Code Online (Sandbox Code Playgroud)
现在我需要传递exp1到_db.Messages.where(exp1);问题是我只有exp2,我需要将类型转换为Message,所有属性都是一样的!
现在我这样做:
var par = Expression.Parameter(typeof(Message));
var ex = (Expression<Func<Message, bool>>)Expression.Lambda(exp2.Body, par);
Run Code Online (Sandbox Code Playgroud)
问题是输入参数改变了是的!但是lambda"x.mesID"正文中的x属于旧类型.
任何方式改变身体中的所有参数类型或改变输入参数,它反映身体呢?
我想这是我一直对LINQ的一个大问题,因为在层之间我不能传递生成的类,因为这会使层耦合,所以我必须制作轻量级类,现在我如何使用像_db.Messages这样的方法.哪里(); 从busiess层?!! 虽然busniess层对Message类型一无所知,但它只知道MessageDTO.