mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-09-19 10:08:19 +08:00
Add ConditionalType.InLike
This commit is contained in:
@@ -434,7 +434,8 @@ namespace SqlSugar
|
|||||||
public virtual ISugarQueryable<T> Where(List<IConditionalModel> conditionalModels)
|
public virtual ISugarQueryable<T> Where(List<IConditionalModel> conditionalModels)
|
||||||
{
|
{
|
||||||
if (conditionalModels.IsNullOrEmpty()) return this;
|
if (conditionalModels.IsNullOrEmpty()) return this;
|
||||||
var sqlObj = this.SqlBuilder.ConditionalModelToSql(conditionalModels);
|
var sqlObj = this.SqlBuilder.ConditionalModelToSql(conditionalModels,this.QueryBuilder.WhereIndex);
|
||||||
|
this.QueryBuilder.WhereIndex++;
|
||||||
return this.Where(sqlObj.Key, sqlObj.Value);
|
return this.Where(sqlObj.Key, sqlObj.Value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -122,12 +122,13 @@ namespace SqlSugar
|
|||||||
StringBuilder builder = new StringBuilder();
|
StringBuilder builder = new StringBuilder();
|
||||||
List<SugarParameter> parameters = new List<SugarParameter>();
|
List<SugarParameter> parameters = new List<SugarParameter>();
|
||||||
var sqlBuilder = InstanceFactory.GetSqlbuilder(this.Context.CurrentConnectionConfig);
|
var sqlBuilder = InstanceFactory.GetSqlbuilder(this.Context.CurrentConnectionConfig);
|
||||||
|
var mainIndex = 0;
|
||||||
foreach (var model in models)
|
foreach (var model in models)
|
||||||
{
|
{
|
||||||
if (model is ConditionalModel)
|
if (model is ConditionalModel)
|
||||||
{
|
{
|
||||||
var item = model as ConditionalModel;
|
var item = model as ConditionalModel;
|
||||||
var index = models.IndexOf(item) + beginIndex;
|
var index = mainIndex + beginIndex;
|
||||||
var type = index == 0 ? "" : "AND";
|
var type = index == 0 ? "" : "AND";
|
||||||
if (beginIndex > 0)
|
if (beginIndex > 0)
|
||||||
{
|
{
|
||||||
@@ -231,6 +232,19 @@ namespace SqlSugar
|
|||||||
parameters.Add(new SugarParameter(parameterName, GetFieldValue(item)));
|
parameters.Add(new SugarParameter(parameterName, GetFieldValue(item)));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case ConditionalType.InLike:
|
||||||
|
var array =(item.FieldValue+"").Split(',').ToList();
|
||||||
|
List<string> sqls = new List<string>();
|
||||||
|
int i = 0;
|
||||||
|
foreach (var val in array)
|
||||||
|
{
|
||||||
|
var itemParameterName = $"{ parameterName}{index}{i}";
|
||||||
|
sqls.Add(item.FieldName.ToSqlFilter()+ " LIKE " + itemParameterName);
|
||||||
|
parameters.Add(new SugarParameter(itemParameterName, "%" + val + "%"));
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
builder.Append($" ({string.Join(" OR ", sqls)}) ");
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -275,6 +289,7 @@ namespace SqlSugar
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
mainIndex++;
|
||||||
}
|
}
|
||||||
return new KeyValuePair<string, SugarParameter[]>(builder.ToString(), parameters.ToArray());
|
return new KeyValuePair<string, SugarParameter[]>(builder.ToString(), parameters.ToArray());
|
||||||
}
|
}
|
||||||
|
@@ -22,5 +22,6 @@ namespace SqlSugar
|
|||||||
IsNot=12,
|
IsNot=12,
|
||||||
NoLike = 13,
|
NoLike = 13,
|
||||||
EqualNull = 14,
|
EqualNull = 14,
|
||||||
|
InLike=15
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user