Example #1
0
        private Expression GetExpression(ParameterExpression param, Filter item)
        {
            //属性表达式
            LambdaExpression exp = GetPropertyLambdaExpression(item, param);

            //如果有特殊类型处理,则进行处理,暂时不关注
            foreach (var provider in TransformProviders.Items)
            {
                if (provider.Match(item, exp.Body.Type))
                {
                    return(GetGroupExpression(param, provider.Transform(item, exp.Body.Type), Expression.AndAlso));
                }
            }

            ITransformProvider orProvider = new OrGroupTransformProvider();

            if (orProvider.Match(item, exp.Body.Type))
            {
                return(GetGroupExpression(param, orProvider.Transform(item, exp.Body.Type), Expression.OrElse));
            }
            //常量表达式
            var constant = ChangeTypeToExpression(item, exp.Body.Type);

            //以判断符或方法连接
            return(ExpressionDict[item.Operation](exp.Body, constant));
        }
        //获取逻辑表达式如 id==1
        private Expression GetExpression(ParameterExpression param, SearchItem item)
        {
            //属性表达式
            var exp = GetPropertyLambdaExpression(item, param);

            foreach (var provider in TransformProviders)
            {
                if (provider.Match(item, exp.Body.Type))
                {
                    return(GetGroupExpression(param, provider.Transform(item, exp.Body.Type), Expression.AndAlso));
                }
            }
            //常量表达式
            var constant = ChangeTypeToExpression(item, exp.Body.Type);

            //使用已有谓词关联
            return(ExpressionDict[item.Method](exp.Body, constant));
        }
Example #3
0
        private Expression GetExpression(ParameterExpression param, ConditionItem item)
        {
            //属性表达式
            LambdaExpression exp = GetPropertyLambdaExpression(item, param);

            //如果有特殊类型处理,则进行处理,暂时不关注
            foreach (var provider in TransformProviders)
            {
                if (provider.Match(item, exp.Body.Type))
                {
                    return(GetGroupExpression(param, provider.Transform(item, exp.Body.Type), Expression.AndAlso));
                }
            }
            //常量表达式
            var constant = ChangeTypeToExpression(item, exp.Body.Type);

            //以判断符或方法连接
            return(ExpressionDict[item.Method](exp.Body, constant));
        }
Example #4
0
        private Expression GetExpression(ParameterExpression param, ConditionItem item)
        {
            //Attribute expression
            LambdaExpression exp = GetPropertyLambdaExpression(item, param);

            //If there are special type processing, the processing, temporary no attention
            foreach (var provider in TransformProviders)
            {
                if (provider.Match(item, exp.Body.Type))
                {
                    return(GetGroupExpression(param, provider.Transform(item, exp.Body.Type), Expression.AndAlso));
                }
            }
            //Constant expression
            var constant = ChangeTypeToExpression(item, exp.Body.Type);

            //Judged by the operator or method connection
            return(ExpressionDict[item.Method](exp.Body, constant));
        }