首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

Expression表达式动态组合有关问题

2013-03-06 
Expression表达式动态组合问题假如我有一个表达式ExpressionFuncTEntity, int IdExp m m.CID还

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);
        }

热点排行