Expression表达式动态组合问题
假如我有一个表达式
Expression<Func<TEntity, int>> IdExp = m => m.CID;
还有一个参数id(动态的)
我现在想生存一个表达式,这个表达式类似如下的,注意,这里我只能访问到IdExp表达式和id参数(这里假设id为1),如何组合这两个东西,使它变成一下的表达式:
Expression<Func<TEntity, bool>> exp = m => m.CID == 1;
[解决办法]
public static Expression<Func<TEntity, bool>> ConvertExpression(Expression<Func<TEntity, int>> IdExp, int value)
{
ParameterExpression para = IdExp.Parameters[0];
MemberExpression member = (MemberExpression)IdExp.Body;
ConstantExpression con = Expression.Constant(value);
var left = Expression.Property(para, para.Type.GetProperty(member.Member.Name));
var exp = Expression.Equal(left, con);
return Expression.Lambda<Func<TEntity, bool>>(exp, para);
}