From ee999253c255b2223e1fb6f0bb9bca2225c0cc41 Mon Sep 17 00:00:00 2001 From: sunkaixuan <610262374@qq.com> Date: Tue, 27 Jun 2017 16:29:55 +0800 Subject: [PATCH] Synchronization Core --- .../ExpressionsToSql/Common/ExpressionTool.cs | 2 +- .../ResolveItems/MethodCallExpressionResolve.cs | 13 +++++++++++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/ExpressionsToSql/Common/ExpressionTool.cs b/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/ExpressionsToSql/Common/ExpressionTool.cs index 91ddbaf07..b0c436ad4 100644 --- a/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/ExpressionsToSql/Common/ExpressionTool.cs +++ b/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/ExpressionsToSql/Common/ExpressionTool.cs @@ -158,7 +158,7 @@ namespace SqlSugar return reval; } - public static object DynamicInvoke(MemberExpression expression) + public static object DynamicInvoke(Expression expression) { object value = Expression.Lambda(expression).Compile().DynamicInvoke(); if (value != null && value.GetType().IsClass() && value.GetType() != ExpressionConst.StringType) diff --git a/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve.cs b/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve.cs index e23875293..de16dc518 100644 --- a/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve.cs +++ b/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve.cs @@ -14,8 +14,17 @@ namespace SqlSugar var express = base.Expression as MethodCallExpression; var isLeft = parameter.IsLeft; string methodName = express.Method.Name; - var isValidNativeMethod = MethodMapping.ContainsKey(methodName)&&express.Method.DeclaringType.Namespace==("System"); - if (!isValidNativeMethod&&express.Method.DeclaringType.Namespace.IsIn("System.Linq", "System.Collections.Generic")&&methodName=="Contains") { + if (methodName == "get_Item") + { + string paramterName = this.Context.SqlParameterKeyWord + ExpressionConst.Const + this.Context.ParameterIndex; + this.Context.Parameters.Add(new SugarParameter(paramterName, ExpressionTool.DynamicInvoke(express))); + this.Context.Result.Append(string.Format(" {0} ", paramterName)); + this.Context.ParameterIndex++; + return; + } + var isValidNativeMethod = MethodMapping.ContainsKey(methodName) && express.Method.DeclaringType.Namespace == ("System"); + if (!isValidNativeMethod&&express.Method.DeclaringType.Namespace.IsIn("System.Linq", "System.Collections.Generic") && methodName == "Contains") + { methodName = "ContainsArray"; isValidNativeMethod = true; }