- 优化 WhereDynamic 传入 DynamicFilterInfo 也能执行;

This commit is contained in:
28810
2020-09-29 11:54:16 +08:00
parent d617b237de
commit 35069609de
2 changed files with 21 additions and 4 deletions

View File

@ -338,9 +338,26 @@ namespace FreeSql.Internal.CommonProvider
_tables[0].Parameter = exp.Parameters[0];
return this.InternalWhere(exp?.Body);
}
public ISelect<T1> WhereDynamic(object dywhere, bool not = false) => not == false ?
this.Where(_commonUtils.WhereObject(_tables.First().Table, $"{_tables.First().Alias}.", dywhere)) :
this.Where($"not({_commonUtils.WhereObject(_tables.First().Table, $"{_tables.First().Alias}.", dywhere)})");
public ISelect<T1> WhereDynamic(object dywhere, bool not = false)
{
if (dywhere is DynamicFilterInfo dyfilter)
{
if (not == false) return this.WhereDynamicFilter(dyfilter);
var oldwhere = _where.ToString();
_where.Clear();
this.WhereDynamicFilter(dyfilter);
var newwhere = _where.ToString();
_where.Clear();
return this
.Where(oldwhere)
.WhereIf(string.IsNullOrWhiteSpace(newwhere) == false, $"not({newwhere})");
}
var wheresql = _commonUtils.WhereObject(_tables.First().Table, $"{_tables.First().Alias}.", dywhere);
return not == false ? this.Where(wheresql) : this.Where($"not({wheresql})");
}
public ISelect<T1> WhereCascade(Expression<Func<T1, bool>> exp)
{