Add ConditionalType.InLike

This commit is contained in:
sunkaixuna 2021-08-20 18:54:49 +08:00
parent 10f2d29c38
commit c6a1fa4655
3 changed files with 19 additions and 2 deletions

View File

@ -434,7 +434,8 @@ namespace SqlSugar
public virtual ISugarQueryable<T> Where(List<IConditionalModel> conditionalModels)
{
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);
}

View File

@ -122,12 +122,13 @@ namespace SqlSugar
StringBuilder builder = new StringBuilder();
List<SugarParameter> parameters = new List<SugarParameter>();
var sqlBuilder = InstanceFactory.GetSqlbuilder(this.Context.CurrentConnectionConfig);
var mainIndex = 0;
foreach (var model in models)
{
if (model is ConditionalModel)
{
var item = model as ConditionalModel;
var index = models.IndexOf(item) + beginIndex;
var index = mainIndex + beginIndex;
var type = index == 0 ? "" : "AND";
if (beginIndex > 0)
{
@ -231,6 +232,19 @@ namespace SqlSugar
parameters.Add(new SugarParameter(parameterName, GetFieldValue(item)));
}
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:
break;
}
@ -275,6 +289,7 @@ namespace SqlSugar
}
}
}
mainIndex++;
}
return new KeyValuePair<string, SugarParameter[]>(builder.ToString(), parameters.ToArray());
}

View File

@ -22,5 +22,6 @@ namespace SqlSugar
IsNot=12,
NoLike = 13,
EqualNull = 14,
InLike=15
}
}