diff --git a/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/MemberExpressionResolve.cs b/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/MemberExpressionResolve.cs index 2f81a0d1e..cc9b70daa 100644 --- a/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/MemberExpressionResolve.cs +++ b/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/MemberExpressionResolve.cs @@ -811,6 +811,7 @@ namespace SqlSugar { var pars = new MethodCallExpressionModel() { + Conext=this.Context, Args = new List() { new MethodCallExpressionArgs() { IsMember=true, MemberName=value, MemberValue=value }, new MethodCallExpressionArgs() { MemberName=type, MemberValue=type} diff --git a/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve.cs b/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve.cs index 02bf0e8bf..d0e49ad01 100644 --- a/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve.cs +++ b/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve.cs @@ -282,6 +282,10 @@ namespace SqlSugar { expItem = (item as UnaryExpression).Operand; } + else if (item is MethodCallExpression callExpression&& callExpression.Method.Name== "op_Implicit") + { + expItem = callExpression.Arguments[0]; + } AppendItem(parameter, name, args, model, expItem); } if (appendArgs != null) diff --git a/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve_Helper.cs b/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve_Helper.cs index 61d8a3b0a..15ca4e865 100644 --- a/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve_Helper.cs +++ b/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve_Helper.cs @@ -1037,8 +1037,32 @@ namespace SqlSugar private bool IsContainsArray(MethodCallExpression express, string methodName, bool isValidNativeMethod) { + if (isMemoryExtensionsContainsArray(express, methodName)) + { + return true; + } return !isValidNativeMethod && express.Method.DeclaringType.Namespace.IsIn("System.Collections", "System.Linq", "System.Collections.Generic") && methodName == "Contains"; } + private bool isMemoryExtensionsContainsArray(MethodCallExpression express, string methodName) + { + var isMemoryExtensionsContainsArray = false; + if (express.Method.DeclaringType.Name == "MemoryExtensions" && methodName == "Contains") + { + if (express.Arguments.Count() == 2) + { + if (express.Arguments.First() is MethodCallExpression callExpression) + { + if (callExpression.Method.Name == "op_Implicit") + { + isMemoryExtensionsContainsArray = true; + } + } + } + } + + return isMemoryExtensionsContainsArray; + } + private bool IsSubMethod(MethodCallExpression express, string methodName) { return SubTools.SubItemsConst.Any(it => it.Name == methodName) && express.Object != null && (express.Object.Type.Name.StartsWith("Subqueryable`"));