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

View File

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

View File

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