コード例 #1
0
        public static IQueryable <TEntity> GetQuery(IQueryable <TEntity> inputQuery,
                                                    ISpecification <TEntity> spec)
        {
            var query = inputQuery;

            query = SpecificationEvaluatorCriteria <TEntity> .GetQuery(query, spec);

            query = spec.Includes.Aggregate(query, (current, include) => current.Include(include));

            if (spec.OrderBy != null)
            {
                query = query.OrderBy(spec.OrderBy);
            }

            if (spec.OrderByDescending != null)
            {
                query = query.OrderByDescending(spec.OrderByDescending);
            }

            if (spec.IsPagingEnabled)
            {
                query = query.Skip(spec.Skip).Take(spec.Take);
            }

            return(query);
        }
コード例 #2
0
 private IQueryable <T> ApplySpecificationCriteriaOnly(ISpecification <T> spec)
 {
     return(SpecificationEvaluatorCriteria <T> .GetQuery(_context.Set <T>().AsQueryable(), spec));
 }