/// <summary>Enables this filter on the specified types.</summary> /// <param name="filter">The filter to enable.</param> /// <param name="types">A variable-length parameters list containing types to enable the filter on.</param> public void EnableFilter(BaseQueryFilter filter, params Type[] types) { List <QueryFilterSet> filterSets; // CHECK if the element type can be used in the context if (FilterSetByType.TryGetValue(filter.ElementType, out filterSets)) { if (types != null) { var applySets = new List <QueryFilterSet>(); foreach (var type in types) { List <QueryFilterSet> setToAdd; if (FilterSetByType.TryGetValue(type, out setToAdd)) { applySets.AddRange(setToAdd); } } // KEEP only applicable filter set filterSets = filterSets.Intersect(applySets.Distinct()).ToList(); } foreach (var set in filterSets) { set.AddOrGetFilterQueryable(Context).EnableFilter(filter); } } }
/// <summary>Enable this filter on the specified types.</summary> /// <param name="filter">The filter to enable.</param> /// <param name="types">A variable-length parameters list containing types to enable the filter on.</param> public void EnableFilter(IQueryFilter filter, params Type[] types) { List <QueryFilterSet> filterSets; if (FilterSetByType.TryGetValue(filter.ElementType, out filterSets)) { if (types != null) { var applySets = new List <QueryFilterSet>(); foreach (var type in types) { List <QueryFilterSet> setToAdd; if (FilterSetByType.TryGetValue(type, out setToAdd)) { applySets.AddRange(setToAdd); } } filterSets = filterSets.Intersect(applySets.Distinct()).ToList(); } foreach (var set in filterSets) { set.AddOrGetFilterQueryable(Context).EnableFilter(filter); } } }