@@ -931,7 +931,16 @@ public string ExpressionLambdaToSql(Expression exp, ExpTSC tsc)
931931 return $ "not({ ExpressionLambdaToSql ( notExp , tsc ) } )";
932932 case ExpressionType . Quote : return ExpressionLambdaToSql ( ( exp as UnaryExpression ) ? . Operand , tsc ) ;
933933 case ExpressionType . Lambda : return ExpressionLambdaToSql ( ( exp as LambdaExpression ) ? . Body , tsc ) ;
934- case ExpressionType . Invoke : return formatSql ( Expression . Lambda ( exp ) . Compile ( ) . DynamicInvoke ( ) , tsc . mapType , tsc . mapColumnTmp , tsc . dbParams ) ;
934+ //case ExpressionType.Invoke: return formatSql(Expression.Lambda(exp).Compile().DynamicInvoke(), tsc.mapType, tsc.mapColumnTmp, tsc.dbParams);
935+ case ExpressionType . Invoke :
936+ var invokeExp = exp as InvocationExpression ;
937+ var invokeReplaceVistor = new FreeSql . Internal . CommonExpression . ReplaceVisitor ( ) ;
938+ var invokeReplaceExp = invokeExp . Expression ;
939+ var invokeLambdaExp = invokeReplaceExp as LambdaExpression ;
940+ var len = Math . Min ( invokeExp . Arguments . Count , invokeLambdaExp . Parameters . Count ) ;
941+ for ( var a = 0 ; a < len ; a ++ )
942+ invokeReplaceExp = invokeReplaceVistor . Modify ( invokeReplaceExp , invokeLambdaExp . Parameters [ a ] , invokeExp . Arguments [ a ] ) ;
943+ return ExpressionLambdaToSql ( invokeReplaceExp , tsc ) ;
935944 case ExpressionType . TypeAs :
936945 case ExpressionType . Convert :
937946 case ExpressionType . ConvertChecked :
0 commit comments