Exemple #1
0
 /// <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);
 }
Exemple #2
0
        /// <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));
        }
Exemple #3
0
 public FilterLinked(FilterLinked filterLinked)
 {
     _filter = new FilterWrapper();
     _filter.FilterLinked = filterLinked;
 }
Exemple #4
0
 public FilterLinked(SqlFilter filter)
 {
     _filter        = new FilterWrapper();
     _filter.Filter = filter;
 }