- 优化 WhereDynamicFilter 忽略 like '%%';

This commit is contained in:
2881099 2021-02-09 16:40:28 +08:00
parent 6cba1dedaf
commit 2dd722e507
2 changed files with 20 additions and 7 deletions

View File

@ -174,7 +174,7 @@ namespace base_entity
{
""Field"" : ""title"",
""Operator"" : ""contains"",
""Value"" : ""product-1111"",
""Value"" : """",
},
{
""Field"" : ""title"",

View File

@ -514,6 +514,7 @@ namespace FreeSql.Internal.CommonProvider
{
if (filter == null) return this as TSelect;
var sb = new StringBuilder();
if (IsIgnoreFilter(filter)) filter.Field = "";
ParseFilter(DynamicFilterLogic.And, filter, true);
this.Where(sb.ToString());
sb.Clear();
@ -621,6 +622,10 @@ namespace FreeSql.Internal.CommonProvider
sb.Append(sql);
}
if (fi.Filters?.Any() == true)
{
fi.Filters = fi.Filters.Where(a => IsIgnoreFilter(a) == false).ToList(); //忽略 like '%%'
if (fi.Filters.Any())
{
if (string.IsNullOrEmpty(fi.Field) == false)
sb.Append(" AND ");
@ -629,6 +634,7 @@ namespace FreeSql.Internal.CommonProvider
ParseFilter(fi.Logic, fi.Filters[x], x == fi.Filters.Count - 1);
if (fi.Logic == DynamicFilterLogic.Or) sb.Append(")");
}
}
if (isend == false)
{
@ -642,6 +648,13 @@ namespace FreeSql.Internal.CommonProvider
}
}
}
bool IsIgnoreFilter(DynamicFilterInfo testFilter)
{
return string.IsNullOrEmpty(testFilter.Field) == false &&
new[] { DynamicFilterOperator.Contains, DynamicFilterOperator.StartsWith, DynamicFilterOperator.EndsWith }.Contains(testFilter.Operator) &&
string.IsNullOrEmpty(testFilter.Value?.ToString());
}
}
public TSelect DisableGlobalFilter(params string[] name)