コード例 #1
0
 private static void AssertPageDetails(PaginatedResultSet <int> page, int pages, int pageId, int[] items)
 {
     Assert.Equal(pages, page.Pages);
     Assert.Equal(items.Length, page.Count);
     Assert.Equal(pageId, page.Page);
     Assert.Equal(items.Length, page.Items.Count());
     Assert.Equal(page.Items, items);
 }
コード例 #2
0
        private void StandardPaginationTests(IEnumerable <IList <int> > values)
        {
            var items = values.ToArray();

            var p0 = PaginatedResultSet.For(-10, 3, items);
            var p1 = PaginatedResultSet.For(0, 3, items);
            var p2 = PaginatedResultSet.For(1, 3, items);
            var p3 = PaginatedResultSet.For(2, 3, items);
            var p4 = PaginatedResultSet.For(3, 3, items);
            var p5 = PaginatedResultSet.For(4, 3, items);
            var p6 = PaginatedResultSet.For(1, 7, items);
            var p7 = PaginatedResultSet.For(0, 100, items);

            AssertPageDetails(p0, pages: 4, pageId: 0, items: new[] { 1, 2, 3 });
            AssertPageDetails(p1, pages: 4, pageId: 0, items: new[] { 1, 2, 3 });
            AssertPageDetails(p2, pages: 4, pageId: 1, items: new[] { 4, 5, 6 });
            AssertPageDetails(p3, pages: 4, pageId: 2, items: new[] { 7, 8, 9 });
            AssertPageDetails(p4, pages: 4, pageId: 3, items: new[] { 10 });
            AssertPageDetails(p5, pages: 4, pageId: 3, items: new[] { 10 });
            AssertPageDetails(p6, pages: 2, pageId: 1, items: new[] { 8, 9, 10 });
            AssertPageDetails(p7, pages: 1, pageId: 0, items: new[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 });
        }
コード例 #3
0
        public async Task <ActionResult <PaginatedResultSet <Product> > > GetProducts(int?minPrice, int?page = 1, int?perPage = 20)
        {
            //_context.Products.FromSqlRaw()

            if (page == null || page < 1)
            {
                page = 1;
            }
            if (perPage == null || perPage > 100)
            {
                perPage = 20;
            }

            if (minPrice == null)
            {
                minPrice = int.MinValue;
            }

            var entities = await _context.Products
                           .Where(p => p.Price >= minPrice)
                           .OrderBy(p => p.Id)
                           .Skip((page.Value - 1) * perPage.Value)
                           .Take(perPage.Value)
                           .ToListAsync();

            int count = await _context.Products.Where(p => p.Price >= minPrice).CountAsync();

            var resultSet = new PaginatedResultSet <Product>(entities, page.Value, count, perPage.Value);

            return(resultSet);

            //var linq = from p in _context.Products
            //           where p.Price >= minPrice
            //           select p;
            // return await linq.ToListAsync();
        }