Add Queryable.WhereColums

Add  Deleteable.WhereColums
This commit is contained in:
sunkaixuan
2022-04-30 13:19:47 +08:00
parent ff09396043
commit 826353162a
5 changed files with 55 additions and 11 deletions

View File

@@ -254,21 +254,39 @@ namespace SqlSugar
return result;
}
public IDeleteable<T> WhereColumns(Expression<Func<T, object>> columns)
public IDeleteable<T> WhereColumns(List<T> list,Expression<Func<T, object>> 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<T> WhereColumns(string [] columns)
public IDeleteable<T> WhereColumns(List<Dictionary<string, object>> list)
{
if (columns != null)
List<IConditionalModel> conditionalModels = new List<IConditionalModel>();
foreach (var model in list)
{
tempPrimaryKeys = columns.ToList();
int i = 0;
var clist = new List<KeyValuePair<WhereType, ConditionalModel>>();
foreach (var item in model.Keys)
{
clist.Add(new KeyValuePair<WhereType, ConditionalModel>(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<T> RemoveDataCache()
{

View File

@@ -380,6 +380,31 @@ namespace SqlSugar
_WhereClassByPrimaryKey(new List<T>() { data });
return this;
}
public ISugarQueryable<T> WhereColumns(List<Dictionary<string, object>> list)
{
List<IConditionalModel> conditionalModels = new List<IConditionalModel>();
foreach (var model in list)
{
int i = 0;
var clist = new List<KeyValuePair<WhereType, ConditionalModel>>();
foreach (var item in model.Keys)
{
clist.Add(new KeyValuePair<WhereType, ConditionalModel>(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);
}
/// <summary>
/// if a property that is primary key is a condition

View File

@@ -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;
}

View File

@@ -29,8 +29,8 @@ namespace SqlSugar
IDeleteable<T> Where(string whereString, SugarParameter parameter);
IDeleteable<T> Where(string whereString, SugarParameter[] parameters);
IDeleteable<T> Where(string whereString, List<SugarParameter> parameters);
IDeleteable<T> WhereColumns(Expression<Func<T, object>> columns);
IDeleteable<T> WhereColumns(string [] columns);
IDeleteable<T> WhereColumns(List<T> list,Expression<Func<T, object>> columns);
IDeleteable<T> WhereColumns(List<Dictionary<string,object>> columns);
IDeleteable<T> Where(List<IConditionalModel> conditionalModels);
IDeleteable<T> EnableDiffLogEvent(object businessData = null);
IDeleteable<T> RemoveDataCache();

View File

@@ -52,6 +52,7 @@ namespace SqlSugar
ISugarQueryable<T> WhereClass<ClassType>(List<ClassType> whereClassList,bool ignoreDefaultValue = false) where ClassType : class, new();
ISugarQueryable<T> WhereClassByPrimaryKey(List<T> list);
ISugarQueryable<T> WhereClassByPrimaryKey(T data) ;
ISugarQueryable<T> WhereColumns(List<Dictionary<string, object>> columns);
ISugarQueryable<T> Where(Expression<Func<T, bool>> expression);
ISugarQueryable<T> Where(string whereString, object parameters = null);
ISugarQueryable<T> Where(List<IConditionalModel> conditionalModels);