private void AddFilterValue(string parent, XElement prop, object parsedValue) { XElement filterMember = prop.Element("FilterMember"); if (parent == null || filterMember == null || filterMember.Value == null || !filterMember.Value.ToBoolean()) { return; } var key = prop.Element("Name").Value.ToString(); var item = PropertyFilter.FirstOrDefault(x => x.PropertyName == key); if (item != null) { var valList = item.Values; var valuePair = new PropertyFilterValue { Value = parsedValue, Parent = parent }; if (!valList.Contains(valuePair)) { valList.Add(valuePair); } } else { var valList = new List <PropertyFilterValue>(); valList.Add(new PropertyFilterValue { Value = parsedValue, Parent = parent }); PropertyFilter.Add(new PropertyFilter { PropertyName = key, Values = valList }); } }
private static int CompareValues(PropertyFilterValue a, PropertyFilterValue b) { switch (a.Value) { case string _: return(((string)a.Value).CompareTo((string)b.Value)); case decimal _: return(((decimal)a.Value).CompareTo((decimal)b.Value)); case int _: return(((int)a.Value).CompareTo((int)b.Value)); default: return(0); } }