/// <summary> /// Parses a single equality, editing the outer JObject /// </summary> /// <param name="equality"></param> /// <param name="outer"></param> /// <returns></returns> protected virtual JObject ParseEquality(Equality equality, JObject outer) { Field field = equality.FirstOrDefault(statement => statement is Field) as Field; Value value = equality.FirstOrDefault(statement => statement is Value) as Value; if (field != null && value != null) { String parsedField = this.ParseField(field); String parsedEquality = this.ParseEquality(equality); Object parsedValue = this.ParseValue(value); if (String.IsNullOrEmpty(parsedEquality) == true) { outer.Add(new JProperty(parsedField, parsedValue)); } else { if (outer[parsedField] == null) { outer[parsedField] = new JObject(); } ((JObject)outer[parsedField]).Add(new JProperty(parsedEquality, parsedValue)); } } return outer; }