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