예제 #1
0
        public void DynamicCriteriaExtensions_ApplyDynamicPaginatedCriteria_ReturnPaginatedFilteredResult()
        {
            // arrange
            DbHelper.CleanBlog(_dbContext);
            DbHelper.SeedBulkBlogs(_dbContext);

            var filteredList = _dbContext.Blogs
                               .OrderByDescending(o => o.Id)
                               .Where(q => q.Id > 10)
                               .ToList();
            var expected = new Paginated <Blog>(filteredList.Skip(3).Take(3).ToList(), filteredList.Count, 2, 3);

            // act
            var criteria = new DynamicPaginatedCriteria
            {
                Sorts            = "Id desc",
                FilterClause     = "Id > @0",
                FilterParameters = new object[] { 10 },
                CurrentPage      = 2,
                PageSize         = 3
            };
            var actual = _dbContext.Blogs.ToPaginated(criteria);

            // assert
            Assert.Equal(expected, actual, new PaginatedEqualityComparer <Blog>());
        }
예제 #2
0
 public async Task <IPaginated <TDto> > GetPaginated <TDto>(DynamicPaginatedCriteria criteria, CancellationToken cancellationToken)
 {
     return(await Queryable
            .ProjectTo <TDto>(Mapper.ConfigurationProvider)
            .ApplyCriteria(criteria)
            .ToPaginatedAsync(criteria, cancellationToken));
 }
예제 #3
0
 public virtual async Task <IPaginated <TEntity> > GetPaginated(DynamicPaginatedCriteria criteria, CancellationToken cancellationToken = default)
 {
     return(await DbSet.ApplyCriteria(criteria)
            .ToPaginatedAsync(criteria, cancellationToken));
 }