示例#1
0
        static void ProcessFilter(SearchContext context, Dictionary <string, object> request)
        {
            foreach (var filter in context.textFilters)
            {
                var filterTokens = filter.Split(':');
                var qp           = k_QueryParams.Find(p => p.name == filterTokens[0]);
                if (qp == null || (filterTokens.Length != 2 && qp.type != QueryParamType.kBoolean))
                {
                    continue;
                }
                switch (qp.type)
                {
                case QueryParamType.kBoolean:
                {
                    var isOn = false;
                    if (filterTokens.Length == 2)
                    {
                        isOn = TryConvert.ToBool(filterTokens[1]);
                    }
                    else
                    {
                        isOn = true;
                    }
                    request.Add(qp.queryName, isOn);
                    break;
                }

                case QueryParamType.kInteger:
                {
                    var value = TryConvert.ToInt(filterTokens[1]);
                    request.Add(qp.queryName, value);
                    break;
                }

                case QueryParamType.kFloat:
                {
                    var value = TryConvert.ToFloat(filterTokens[1]);
                    request.Add(qp.queryName, value);
                    break;
                }

                case QueryParamType.kString:
                {
                    request.Add(qp.queryName, filterTokens[1]);
                    break;
                }

                case QueryParamType.kStringArray:
                {
                    request.Add(qp.queryName, new object[] { filterTokens[1] });
                    break;
                }
                }
            }
        }