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