/// <summary> /// 将当前过滤条件项转换为指定SQL过滤条件字符 /// </summary> /// <returns></returns> public string ToSqlFilter(IDbContext Db) { StringBuilder SqlFilter = new StringBuilder(); bool isHeader = true; for (int i = 0; i < FilterItems.Count; i++) { SearchItem item = FilterItems[i]; if (item.SqlPrefixType == SqlPrefixType.EndByGroup) { if (!isHeader) { SqlFilter.Append(")"); } continue; } string s = item.ToSqlFilter(Db); //得到当前项查询条件 if (s.IsNotWhiteSpace()) //有条件 { string parfix = ""; if (item.SqlPrefixType == SqlPrefixType.AfterGroupByAnd || item.SqlPrefixType == SqlPrefixType.AfterGroupByOr) { parfix = " ("; } SqlFilter.AppendFormat(" {0} ({1}) ", isHeader ? parfix : GetPrefix(item.SqlPrefixType), s); if (isHeader) { isHeader = false; } } } string sql = SqlFilter.ToString(); List <string> wheres = new List <string>(); if (sql.IsNotWhiteSpace()) { wheres.Add($"({sql})"); } if (CustomSqlFilters.HasElement()) { wheres.AddRange(CustomSqlFilters.ConvertAll(item => $"({item})")); } if (SelfDefineSqlFilter.IsNotWhiteSpace()) { wheres.Add($"{SelfDefineSqlFilter}"); } return(string.Join($" {Db.Function.AndSqlExp()} ", wheres)); }
public IFilter CopySearchItemsTo(IFilter filter) { if (filter == this) { return(this); } filter.AppendDefineItems(SqlFieldItems); filter.AppendDefineItems(AppendItems); if (SelfDefineSqlFilter.IsNotWhiteSpace()) { if (filter.SelfDefineSqlFilter.IsWhiteSpace()) { filter.SelfDefineSqlFilter = SelfDefineSqlFilter; } else { filter.SelfDefineSqlFilter = string.Format("({0}) and ({1})", SelfDefineSqlFilter, filter.SelfDefineSqlFilter); } } return(this); }