mirror of
https://github.com/nsnail/FreeSql.git
synced 2025-04-22 02:32:50 +08:00
- 优化 WhereDynamicFilter 忽略 like '%%';
This commit is contained in:
parent
6cba1dedaf
commit
2dd722e507
@ -174,7 +174,7 @@ namespace base_entity
|
|||||||
{
|
{
|
||||||
""Field"" : ""title"",
|
""Field"" : ""title"",
|
||||||
""Operator"" : ""contains"",
|
""Operator"" : ""contains"",
|
||||||
""Value"" : ""product-1111"",
|
""Value"" : """",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
""Field"" : ""title"",
|
""Field"" : ""title"",
|
||||||
|
@ -514,6 +514,7 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
{
|
{
|
||||||
if (filter == null) return this as TSelect;
|
if (filter == null) return this as TSelect;
|
||||||
var sb = new StringBuilder();
|
var sb = new StringBuilder();
|
||||||
|
if (IsIgnoreFilter(filter)) filter.Field = "";
|
||||||
ParseFilter(DynamicFilterLogic.And, filter, true);
|
ParseFilter(DynamicFilterLogic.And, filter, true);
|
||||||
this.Where(sb.ToString());
|
this.Where(sb.ToString());
|
||||||
sb.Clear();
|
sb.Clear();
|
||||||
@ -622,12 +623,17 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
}
|
}
|
||||||
if (fi.Filters?.Any() == true)
|
if (fi.Filters?.Any() == true)
|
||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(fi.Field) == false)
|
fi.Filters = fi.Filters.Where(a => IsIgnoreFilter(a) == false).ToList(); //忽略 like '%%'
|
||||||
sb.Append(" AND ");
|
|
||||||
if (fi.Logic == DynamicFilterLogic.Or) sb.Append("(");
|
if (fi.Filters.Any())
|
||||||
for (var x = 0; x < fi.Filters.Count; x++)
|
{
|
||||||
ParseFilter(fi.Logic, fi.Filters[x], x == fi.Filters.Count - 1);
|
if (string.IsNullOrEmpty(fi.Field) == false)
|
||||||
if (fi.Logic == DynamicFilterLogic.Or) sb.Append(")");
|
sb.Append(" AND ");
|
||||||
|
if (fi.Logic == DynamicFilterLogic.Or) sb.Append("(");
|
||||||
|
for (var x = 0; x < fi.Filters.Count; x++)
|
||||||
|
ParseFilter(fi.Logic, fi.Filters[x], x == fi.Filters.Count - 1);
|
||||||
|
if (fi.Logic == DynamicFilterLogic.Or) sb.Append(")");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isend == false)
|
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)
|
public TSelect DisableGlobalFilter(params string[] name)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user