public static void AddFilter(this FilterState filterState, string fieldName, object value, FilterOperator fieldOperator) { if (filterState.Filter == null) { filterState.Filter = new CompositeFilterDescriptor() { Logic = "and", Filters = new List <dynamic>() }; } var found = SearchFilterDescriptors(filterState.Filter, fieldName).FirstOrDefault(); if (found != null) { throw new InvalidOperationException($"filter [${fieldName}] already exists"); } var filterJson = new FilterDescriptor() { Field = fieldName, Value = value, Operator = fieldOperator.ToOperatorStr(), }.ToJson(); filterState.Filter.Filters.Add(filterJson); }