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); }