public void ExtractValues(System.Collections.Specialized.IOrderedDictionary dictionary) { var conditionsJsonStr = conditions.Value; var expressionJsonStr = expression.Value; dictionary[ConditionsFieldName] = conditionsJsonStr; dictionary[ExpressionFieldName] = expressionJsonStr; if (RelexFieldName != null && !String.IsNullOrEmpty(conditionsJsonStr) && !String.IsNullOrEmpty(expressionJsonStr)) { var expressionData = JsHelper.FromJsonString <IDictionary <string, object> >(expressionJsonStr); var exprStr = Convert.ToString(expressionData["expression"]); if (String.IsNullOrEmpty(exprStr.Trim())) { dictionary[RelexFieldName] = "1=1"; } else { var fieldData = JsHelper.FromJsonString <IList <Dictionary <string, object> > >(fieldDescriptors.Value); var fieldTypeMapping = new Dictionary <string, string>(); var relexConditionMapping = new Dictionary <string, string>(); foreach (var fldData in fieldData) { fieldTypeMapping[Convert.ToString(fldData["name"])] = Convert.ToString(fldData["dataType"]); if (fldData.ContainsKey("relexcondition")) { relexConditionMapping[Convert.ToString(fldData["name"])] = Convert.ToString(fldData["relexcondition"]); } } dictionary[RelexFieldName] = QueryBuilderHelper.GenerateRelexFromQueryBuilder(JsHelper.FromJsonString <IList <IDictionary <string, object> > >(conditionsJsonStr), exprStr, fieldTypeMapping, relexConditionMapping); } } }