diff --git a/Src/Asp.Net/SqlSugar/Abstract/DeleteProvider/DeleteableProvider.cs b/Src/Asp.Net/SqlSugar/Abstract/DeleteProvider/DeleteableProvider.cs index 7c7f1bd72..e3d721a2c 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/DeleteProvider/DeleteableProvider.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/DeleteProvider/DeleteableProvider.cs @@ -254,21 +254,39 @@ namespace SqlSugar return result; } - public IDeleteable WhereColumns(Expression> columns) + public IDeleteable WhereColumns(List list,Expression> columns) { + this.Where(list); if (columns != null) { tempPrimaryKeys = DeleteBuilder.GetExpressionValue(columns, ResolveExpressType.ArraySingle).GetResultArray().Select(it => this.SqlBuilder.GetNoTranslationColumnName(it)).ToList(); } return this; } - public IDeleteable WhereColumns(string [] columns) + public IDeleteable WhereColumns(List> list) { - if (columns != null) + List conditionalModels = new List(); + foreach (var model in list) { - tempPrimaryKeys = columns.ToList(); + int i = 0; + var clist = new List>(); + foreach (var item in model.Keys) + { + clist.Add(new KeyValuePair(i == 0 ? WhereType.Or : WhereType.And, new ConditionalModel() + { + FieldName =item, + ConditionalType = ConditionalType.Equal, + FieldValue = model[item].ObjToString(), + CSharpTypeName = model[item]==null?null : model[item].GetType().Name + })); + i++; + } + conditionalModels.Add(new ConditionalCollections() + { + ConditionalList = clist + }); } - return this; + return this.Where(conditionalModels); } public IDeleteable RemoveDataCache() { diff --git a/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs b/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs index 8461696f2..a8e0c85ef 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs @@ -380,6 +380,31 @@ namespace SqlSugar _WhereClassByPrimaryKey(new List() { data }); return this; } + public ISugarQueryable WhereColumns(List> list) + { + List conditionalModels = new List(); + foreach (var model in list) + { + int i = 0; + var clist = new List>(); + foreach (var item in model.Keys) + { + clist.Add(new KeyValuePair(i == 0 ? WhereType.Or : WhereType.And, new ConditionalModel() + { + FieldName = item, + ConditionalType = ConditionalType.Equal, + FieldValue = model[item].ObjToString(), + CSharpTypeName = model[item] == null ? null : model[item].GetType().Name + })); + i++; + } + conditionalModels.Add(new ConditionalCollections() + { + ConditionalList = clist + }); + } + return this.Where(conditionalModels); + } /// /// if a property that is primary key is a condition diff --git a/Src/Asp.Net/SqlSugar/Abstract/SaveableProvider/Storageable.cs b/Src/Asp.Net/SqlSugar/Abstract/SaveableProvider/Storageable.cs index 8fff99f08..fe139d9d7 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/SaveableProvider/Storageable.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/SaveableProvider/Storageable.cs @@ -158,9 +158,9 @@ namespace SqlSugar if (this.whereExpression != null) { result.AsUpdateable.WhereColumns(whereExpression); - result.AsDeleteable.WhereColumns(whereExpression); + result.AsDeleteable.WhereColumns(update.Select(it => it.Item).ToList(),whereExpression); } - result.AsDeleteable.Where(delete.Select(it => it.Item).ToList()); + //result.AsDeleteable.Where(delete.Select(it => it.Item).ToList()); return result; } @@ -240,9 +240,9 @@ namespace SqlSugar if (this.whereExpression != null) { result.AsUpdateable.WhereColumns(whereExpression); - result.AsDeleteable.WhereColumns(whereExpression); + result.AsDeleteable.WhereColumns(delete.Select(it => it.Item).ToList(),whereExpression); } - result.AsDeleteable.Where(delete.Select(it => it.Item).ToList()); + //result.AsDeleteable.Where(delete.Select(it => it.Item).ToList()); return result; } diff --git a/Src/Asp.Net/SqlSugar/Interface/IDeleteable.cs b/Src/Asp.Net/SqlSugar/Interface/IDeleteable.cs index 3aa758afa..8d22d39de 100644 --- a/Src/Asp.Net/SqlSugar/Interface/IDeleteable.cs +++ b/Src/Asp.Net/SqlSugar/Interface/IDeleteable.cs @@ -29,8 +29,8 @@ namespace SqlSugar IDeleteable Where(string whereString, SugarParameter parameter); IDeleteable Where(string whereString, SugarParameter[] parameters); IDeleteable Where(string whereString, List parameters); - IDeleteable WhereColumns(Expression> columns); - IDeleteable WhereColumns(string [] columns); + IDeleteable WhereColumns(List list,Expression> columns); + IDeleteable WhereColumns(List> columns); IDeleteable Where(List conditionalModels); IDeleteable EnableDiffLogEvent(object businessData = null); IDeleteable RemoveDataCache(); diff --git a/Src/Asp.Net/SqlSugar/Interface/IQueryable.cs b/Src/Asp.Net/SqlSugar/Interface/IQueryable.cs index f7249cea7..794d5f9f1 100644 --- a/Src/Asp.Net/SqlSugar/Interface/IQueryable.cs +++ b/Src/Asp.Net/SqlSugar/Interface/IQueryable.cs @@ -52,6 +52,7 @@ namespace SqlSugar ISugarQueryable WhereClass(List whereClassList,bool ignoreDefaultValue = false) where ClassType : class, new(); ISugarQueryable WhereClassByPrimaryKey(List list); ISugarQueryable WhereClassByPrimaryKey(T data) ; + ISugarQueryable WhereColumns(List> columns); ISugarQueryable Where(Expression> expression); ISugarQueryable Where(string whereString, object parameters = null); ISugarQueryable Where(List conditionalModels);