From 20d6d5a56d6fd46866482f02ebf21f11850528c4 Mon Sep 17 00:00:00 2001 From: sunkaixuan <610262374@qq.com> Date: Sat, 15 Feb 2025 14:53:00 +0800 Subject: [PATCH] Compatible with.NET 9.2 preview --- .../MethodCallExpressionResolve.cs | 4 ++++ .../MethodCallExpressionResolve_Helper.cs | 24 +++++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve.cs b/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve.cs index 02bf0e8bf..d0e49ad01 100644 --- a/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve.cs +++ b/Src/Asp.NetCore2/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.NetCore2/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve_Helper.cs b/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve_Helper.cs index 61d8a3b0a..15ca4e865 100644 --- a/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve_Helper.cs +++ b/Src/Asp.NetCore2/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`"));