From 99ab3bc39eef200e0d020af4ac7b41f46b0bf30e Mon Sep 17 00:00:00 2001 From: sunkaixuan <610262374@qq.com> Date: Wed, 14 Jun 2017 01:08:12 +0800 Subject: [PATCH] - --- SqlServerTest/UnitTest/ExpressionTest/Method.cs | 11 +++++++++++ .../ResolveItems/MethodCallExpressionResolve.cs | 5 +++++ 2 files changed, 16 insertions(+) diff --git a/SqlServerTest/UnitTest/ExpressionTest/Method.cs b/SqlServerTest/UnitTest/ExpressionTest/Method.cs index 2bf5497c2..16a435b19 100644 --- a/SqlServerTest/UnitTest/ExpressionTest/Method.cs +++ b/SqlServerTest/UnitTest/ExpressionTest/Method.cs @@ -23,6 +23,7 @@ namespace OrmTest.UnitTest { //Native methods + ExtendContainsArray(); ConvetToString(); ExtendToString(); ExtendSubstring(); @@ -416,6 +417,16 @@ namespace OrmTest.UnitTest }, "Contains error"); } + private void ExtendContainsArray() { + string[] array = new string[] { "1", "2" }; + Expression> exp = it => array.Contains(it.Name); + SqlServerExpressionContext expContext = new SqlServerExpressionContext(); + expContext.Resolve(exp, ResolveExpressType.WhereSingle); + var value = expContext.Result.GetString(); + var pars = expContext.Parameters; + base.Check(value, null, " ([Name] IN ('1','2')) ", null, "Contains2 error"); + } + private void ContainsArray() { string[] array = new string[] { "1", "2" }; diff --git a/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve.cs b/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve.cs index 3814228f6..95fb9ecba 100644 --- a/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve.cs +++ b/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve.cs @@ -15,6 +15,10 @@ namespace SqlSugar 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== "System.Linq"&&methodName=="Contains") { + methodName = "ContainsArray"; + isValidNativeMethod = true; + } if (isValidNativeMethod) { NativeExtensionMethod(parameter, express, isLeft, MethodMapping[methodName]); @@ -240,6 +244,7 @@ namespace SqlSugar { "Length","Length"}, { "Replace","Replace"}, { "Contains","Contains"}, + { "ContainsArray","ContainsArray"}, { "EndsWith","EndsWith"}, { "StartsWith","StartsWith"}, { "HasValue","HasValue"},