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; } } } }