public Constraint(string name, RangeQuery range, RangeQuery[] appliedRanges, NameValueCollection queryStringBuilder, string smallRangeQuerystringKey, string largeRangeQuerystringKey, KeyValuePair<string, int> facetQueryResult, bool isRuledOut = false) { Name = name; Count = facetQueryResult.Value; IsApplied = appliedRanges.Contains(range); IsDisabled = isRuledOut || facetQueryResult.Value == 0; if (IsDisabled) { Url = string.Empty; } else { var constraintsQueryStringBuilder = HttpUtility.ParseQueryString(string.Empty); constraintsQueryStringBuilder.Add(queryStringBuilder); if (IsApplied) { foreach (var appliedRange in appliedRanges.Where(appliedRange => appliedRange != range)) { constraintsQueryStringBuilder.Add(smallRangeQuerystringKey, appliedRange.SolrMin); constraintsQueryStringBuilder.Add(largeRangeQuerystringKey, appliedRange.SolrMax); } } else { constraintsQueryStringBuilder.Add(smallRangeQuerystringKey, range.SolrMin); constraintsQueryStringBuilder.Add(largeRangeQuerystringKey, range.SolrMax); foreach (var appliedRange in appliedRanges) { constraintsQueryStringBuilder.Add(smallRangeQuerystringKey, appliedRange.SolrMin); constraintsQueryStringBuilder.Add(largeRangeQuerystringKey, appliedRange.SolrMax); } } Url = constraintsQueryStringBuilder.Count == 0 ? "/" : string.Format("/?{0}", constraintsQueryStringBuilder); } }