protected virtual IQueryable <T> CreateSearchQuery(IContext context, IEnumerable <T> filters, List <string> includes, List <OrderBy> orderBys, Paging paging) { IQueryable <T> completeQuery = null; foreach (var filter in filters) { IQueryable <T> queryForFilter = context.Set <T>(); queryForFilter = _scopeOfResponsibilityService.FilterResultOnCurrentPrincipal(queryForFilter); queryForFilter = _filterService.FilterResultsOnSearch(queryForFilter, filter); queryForFilter = _filterService.AddIncludes(queryForFilter, includes); completeQuery = completeQuery == null ? queryForFilter : completeQuery.Concat(queryForFilter); } if (completeQuery != null) { completeQuery = completeQuery.Distinct(); completeQuery = _filterService.AddOrderBys(completeQuery, orderBys); completeQuery = _filterService.AddPaging(completeQuery, paging); } return(completeQuery); }