コード例 #1
0
        /// <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);
                }
            }
        }
コード例 #2
0
        /// <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);
                }
            }
        }