/// <summary> /// 添加一个过滤器链表到链表 /// </summary> /// <param name="logic">与上一个过滤器的逻辑关系</param> /// <param name="filter">要添加的过滤器链表</param> /// <returns></returns> public FilterLinked AddFilterLinked(LogicOperation logic, FilterLinked filterLinked) { _filter.Next = new FilterWrapper(); _filter.Next.Operation = logic; _filter.Next.FilterLinked = filterLinked; _filter.Next.Prev = _filter; _filter = _filter.Next; return(this); }
/// <summary> /// 将条件链表转换为sql中的where子句,返回转换结果和参数化查询所需要的参数字典 /// </summary> /// <param name="parameters"></param> /// <returns></returns> public string ToString(Dictionary <string, object> parameters) { FilterWrapper wrapper = _filter; List <string> conditions = new List <string>(); string condition = string.Empty; Dictionary <string, object> tempParameters = new Dictionary <string, object>(); while (true) { bool hasChild = false; if (wrapper.FilterLinked != null) { hasChild = true; conditions.Add("(" + wrapper.FilterLinked.ToString(parameters) + ")"); } else { conditions.Add(wrapper.Filter.ToString()); conditions.Add(wrapper.Operation.ToString()); var value = wrapper.Filter.Value; if (value != null && !(value is IList <int> || value is IList <short> || value is IList <long> || value is IList <decimal> || value is IList <double> || value is IList <float>)) { tempParameters.Add(wrapper.Filter.ParameterName, wrapper.Filter.Value); } } wrapper = wrapper.Prev; if (wrapper == null) { if (!hasChild) { conditions.RemoveAt(conditions.Count - 1); } break; } } conditions.Reverse(); var reverseParams = tempParameters.Reverse(); foreach (var item in reverseParams) { parameters.Add(item.Key, item.Value); } return(string.Join(" ", conditions)); }
public FilterLinked(FilterLinked filterLinked) { _filter = new FilterWrapper(); _filter.FilterLinked = filterLinked; }
public FilterLinked(SqlFilter filter) { _filter = new FilterWrapper(); _filter.Filter = filter; }