示例#1
0
        public dynamic GetAutoQuery <T>(IQueryable <T> query) where T : class
        {
            QueryString        = _queryStringAccessor.QueryString;
            ClauseValueManager = _clauseValueManager;
            // Reset the TotalCountQuery
            TotalCountQuery = null;

            // No query string, get only selectable columns
            if (string.IsNullOrEmpty(QueryString))
            {
                _clauseValueManager.SetDefaults(typeof(T));
                TotalCountQuery = query;
                return(GetDefaultSelectableQuery(query));
            }

            GetClauses <T>();
            var criterias = _profile.IsClauseAllowed(ClauseType.Filter) ? GetCriterias <T>().ToList() : null;

            query           = QueryBuilder.AddCriterias(query, criterias, _criteriaFilterManager);
            TotalCountQuery = query;
            var queryResult = QueryBuilder.Build(ClauseValueManager, query, _profile);


            return(queryResult);
        }