diff --git a/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs b/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs index 5bb155719..858190361 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs @@ -1004,7 +1004,20 @@ namespace SqlSugar var isSingle = QueryBuilder.IsSingle(); var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); var fieldName = lamResult.GetResultString(); - return In(fieldName, inValues); + var propertyName = ExpressionTool.GetMemberName(expression); + var propertyColumn = this.EntityInfo.Columns.FirstOrDefault(it => it.PropertyName == propertyName); + if (inValues?.Length==1&& inValues[0]?.GetType()?.FullName?.IsCollectionsList()==true && propertyColumn != null && propertyColumn?.UnderType?.FullName?.IsCollectionsList()!=true) + { + return In(fieldName, UtilMethods.ConvertToListOfObjects(inValues[0])); + } + else if (inValues?.Length == 1 && inValues[0]?.GetType()?.IsArray == true && propertyColumn != null && propertyColumn?.UnderType?.IsArray != true) + { + return In(fieldName, UtilMethods.ConvertToListOfObjects(inValues[0])); + } + else + { + return In(fieldName, inValues); + } } public virtual ISugarQueryable In(List pkValues) { diff --git a/Src/Asp.Net/SqlSugar/Utilities/UtilMethods.cs b/Src/Asp.Net/SqlSugar/Utilities/UtilMethods.cs index fb7320fab..f2c924c7f 100644 --- a/Src/Asp.Net/SqlSugar/Utilities/UtilMethods.cs +++ b/Src/Asp.Net/SqlSugar/Utilities/UtilMethods.cs @@ -1,4 +1,5 @@ using System; +using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Data; @@ -17,6 +18,17 @@ namespace SqlSugar { public class UtilMethods { + public static List ConvertToListOfObjects(object inValues) + { + // 创建一个新的List并逐个将元素转换并添加到其中 + List resultList = new List(); + foreach (var item in (IEnumerable)inValues ) + { + resultList.Add(item); + } + + return resultList; + } public static bool IsValueTypeArray(object memberValue) { return memberValue is List ||