public override IQueryable SetFilters(IQueryable query)
        {
            FilterInitialize();
            foreach (var provider in filterProviders)
            {
                provider.IsSelect    = true;
                provider.Url         = Url;
                provider.ProjectName = "SampleDictionaries";
                provider.Init(typeof(DIC_MySecondDictionary));
                provider.SetFilters(ref query);
            }
            var filter = (IQueryable <DIC_MySecondDictionary>)query;

            //SetFilters(ref filter);
            query = filter;
            var enumerable = FilterByCustomExpressions((IQueryable <DIC_MySecondDictionary>)query);

            enumerable = FilterData(enumerable);

            if (ParentControl != null)
            {
                var param     = Expression.Parameter(typeof(DIC_MySecondDictionary), "r");
                var filterExp = ParentControl.GetExpression(FilterByParentControl, param);
                if (filterExp != null)
                {
                    Expression pred = Expression.Lambda(filterExp, param);
                    Expression expr = Expression.Call(typeof(Queryable), "Where", new[] { typeof(DIC_MySecondDictionary) }, enumerable.Expression, pred);
                    enumerable = (IQueryable <DIC_MySecondDictionary>)enumerable.Provider.CreateQuery(expr);
                }
                else
                {
                    string filterValue;
                    filterValue = ParentControl.SelectedValue == null
                                      ? "0"
                                      : ParentControl.SelectedValueLong.ToString();
                    enumerable = (IQueryable <DIC_MySecondDictionary>)
                                 LinqFilterGenerator.GenerateFilter(enumerable,
                                                                    typeof(DIC_MySecondDictionary),
                                                                    "Equal",
                                                                    FilterByParentControl,
                                                                    filterValue,
                                                                    null);
                }
            }

            IQueryable queryable = enumerable;

            if (ParentControl == null)
            {
                if (NavigatorControl == null)
                {
                    NavigatorControl = new DIC_MySecondDictionaryNavigatorControl {
                        Url = Url
                    }
                }
                ;
                queryable = NavigatorControl.FilterData(queryable);
                if (Url.UserControl != null && Url.UserControl.StartsWith("DIC_MySecondDictionary"))
                {
                    foreach (var queryParameter in Url.QueryParameters)
                    {
                        if (queryParameter.Key.Contains(".") && !string.IsNullOrEmpty(queryParameter.Value) && !queryParameter.Key.EndsWith(".id"))
                        {
                            queryable = LinqFilterGenerator.GenerateFilter(queryable, typeof(DIC_MySecondDictionary), "Equal",
                                                                           queryParameter.Key, queryParameter.Value, null);
                        }
                    }
                }
            }
            return((IQueryable <DIC_MySecondDictionary>)queryable);
        }