mirror of
https://github.com/nsnail/FreeSql.git
synced 2025-04-22 10:42:52 +08:00
- 优化 WhereDynamicFilter 忽略 like '%%';
This commit is contained in:
parent
6cba1dedaf
commit
2dd722e507
@ -174,7 +174,7 @@ namespace base_entity
|
||||
{
|
||||
""Field"" : ""title"",
|
||||
""Operator"" : ""contains"",
|
||||
""Value"" : ""product-1111"",
|
||||
""Value"" : """",
|
||||
},
|
||||
{
|
||||
""Field"" : ""title"",
|
||||
|
@ -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)
|
||||
|
Loading…
x
Reference in New Issue
Block a user