/// <summary> /// 构造函数 /// </summary> /// <param name="group"></param> public FilterTranslator(FilterGroup group) { this.Group = group; this.Parms = new List<FilterParam>(); }
/// <summary> /// 对多组规则进行翻译解析 /// </summary> /// <param name="group">规则数组</param> /// <returns></returns> public string TranslateGroup(FilterGroup group) { StringBuilder bulider = new StringBuilder(); if (group == null) return " 1=1 "; var appended = false; bulider.Append(groupLeftToken); if (group.rules != null) { foreach (var rule in group.rules) { if (appended) bulider.Append(GetOperatorQueryText(group.op)); bulider.Append(TranslateRule(rule)); appended = true; } } if (group.groups != null) { foreach (var subgroup in group.groups) { if (appended) bulider.Append(GetOperatorQueryText(group.op)); bulider.Append(TranslateGroup(subgroup)); appended = true; } } bulider.Append(groupRightToken); if (appended == false) return " 1=1 "; return bulider.ToString(); }