动态生成的lambda方法如下:
      public Expression Lambda(IList<WM_Region> conditionRegion)
        {
            Expression lambda = null;
            var parameter = Expression.Parameter(typeof(WM_Region), "x");
            BinaryExpression body = null;
            try
            {
                for (int i = 0; i < conditionRegion.Count; i++)
                {
                    body = GetBinaryExpression(conditionRegion[i], parameter, body);
                }               
               lambda = Expression.Lambda<Func<UserInfos, bool>>(body, parameter);
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return lambda;
        }

解决方案 »

  1.   

    动态构造Lambda
      

  2.   


                Expression exp = null;
                //Call your own function to initialize expression
                //exp = Lambda(...);            //Del is a Func<UserInfos,bool> delegate instance
                var del = Expression.Lambda<Func<UserInfos, bool>>(exp).Compile();            //Call the delegate
                var ret = del(new UserInfos());