private static void RemoveDuplicated(List <SearchFilter> combinedfilters, SearchFilter filter, SearchFilterOperation operation)
        {
            List <SearchFilter> duplication;
            var comparer = new SearchFilterPathComparer();

            if (filter.Operation == operation)
            {
                duplication = combinedfilters.Intersect(filter.Filters, comparer).ToList();
            }
            else
            {
                duplication = combinedfilters.Where(f => comparer.Equals(f, filter)).ToList();
            }

            combinedfilters.RemoveRange(duplication);
        }
 public static void AppendFilter(List <SearchFilter> subfilters, SearchFilter filter, SearchFilterOperation operation)
 {
     if (filter.Operation == operation)
     {
         subfilters.AddRange(filter.Filters);
     }
     else
     {
         subfilters.Add(filter);
     }
 }
 private static void AppendUniqueFilter(List <SearchFilter> combinedfilters, SearchFilter filter, SearchFilterOperation operation)
 {
     RemoveDuplicated(combinedfilters, filter, operation);
     AppendFilter(combinedfilters, filter, operation);
 }