Search  
RU EN
May 16, 2024

You have been doing pagination wrong in .NET 6

Author:
Source:
Views:
4548
You have been doing pagination wrong in .NET 6 favorites 0

Pagination is in front of us everyday yet we take it for granted kind of like we do with most things. It’s what chunks huge lists of data (blog posts, articles, products) into pages so we can navigate through data.

This is how you did pagination until this point.

Pagination

using System;

public class Article
{
    public int Id;
    public string Title;
    public string Content;
    public int AuthorId;
    
    public List<Article> GetArticles()
    {
        return new List<Article> {
            new Article {Id = 1, Title = "Best title one", Content = "Amazing content", AuthorId = 1},
            new Article {Id = 2, Title = "Another title", Content = "More amazing content", AuthorId = 1},
            new Article {Id = 3, Title = "Unicorns", Content = "Even more amazing content", AuthorId = 1},
            new Article {Id = 4, Title = "Best title one", Content = "Amazing content", AuthorId = 1},
            new Article {Id = 5, Title = "Another title", Content = "More amazing content", AuthorId = 1},
            new Article {Id = 6, Title = "Unicorns", Content = "Even more amazing content", AuthorId = 1},
            new Article {Id = 7, Title = "Best title one", Content = "Amazing content", AuthorId = 1},
            new Article {Id = 8, Title = "Another title", Content = "More amazing content", AuthorId = 1},
            new Article {Id = 9, Title = "Unicorns", Content = "Even more amazing content", AuthorId = 1},
            new Article {Id = 10, Title = "Best title one", Content = "Amazing content", AuthorId = 1},
            new Article {Id = 11, Title = "Another title", Content = "More amazing content", AuthorId = 1},
            new Article {Id = 12, Title = "Unicorns", Content = "Even more amazing content", AuthorId = 1},
        };
    }
}

public class Program
{
    public static void Main()
    {
        List<Article> articles = new Article().GetArticles();
        int pageNumber = 1;
        int itemsPerPage = 5;

        IEnumerable<Article> page = articles.Skip((pageNumber - 1) * itemsPerPage).Take(itemsPerPage);

        Console.WriteLine($"Page: {pageNumber}");
        foreach(Article article in page)
        {
            Console.WriteLine($"    Id: {article.Id}, Title:{article.Title}, Content:{article.Content}, AuthorId:{article.AuthorId}");
        }
    }
}

And now this is how you can achieve the same result but in a more readable way using the Chunk method.

Chunk

using System;

public class Article
{
    public int Id;
    public string Title;
    public string Content;
    public int AuthorId;
    
    public List<Article> GetArticles()
    {
        return new List<Article> {
            new Article {Id = 1, Title = "Best title one", Content = "Amazing content", AuthorId = 1},
            new Article {Id = 2, Title = "Another title", Content = "More amazing content", AuthorId = 1},
            new Article {Id = 3, Title = "Unicorns", Content = "Even more amazing content", AuthorId = 1},
            new Article {Id = 4, Title = "Best title one", Content = "Amazing content", AuthorId = 1},
            new Article {Id = 5, Title = "Another title", Content = "More amazing content", AuthorId = 1},
            new Article {Id = 6, Title = "Unicorns", Content = "Even more amazing content", AuthorId = 1},
            new Article {Id = 7, Title = "Best title one", Content = "Amazing content", AuthorId = 1},
            new Article {Id = 8, Title = "Another title", Content = "More amazing content", AuthorId = 1},
            new Article {Id = 9, Title = "Unicorns", Content = "Even more amazing content", AuthorId = 1},
            new Article {Id = 10, Title = "Best title one", Content = "Amazing content", AuthorId = 1},
            new Article {Id = 11, Title = "Another title", Content = "More amazing content", AuthorId = 1},
            new Article {Id = 12, Title = "Unicorns", Content = "Even more amazing content", AuthorId = 1},
        };
    }
}

public class Program
{
    public static void Main()
    {
        List<Article> articles = new Article().GetArticles();
        int pageNumber = 1;
        int itemsPerPage = 5;

        IEnumerable<Article[]> allPages = articles.Chunk(itemsPerPage);

        Console.WriteLine($"Page: {pageNumber}");
       
        foreach(Article article in allPages.ElementAt(pageNumber - 1))
        {
            Console.WriteLine($"    Id: {article.Id}, Title:{article.Title}, Content:{article.Content}, AuthorId:{article.AuthorId}");
        }
    }
}

There’s nothing wrong with using the first method to do pagination. The Chunk method is a new way of doing achieving the same result but with a cleared code. It takes only one parameter, the maximum size of each chunk (largest numbers of items per page). Is important to note that the Chunk method is only available in .NET 6.

Conclusion

This is another way to do things, another tool in your arsenal so you can use both. 

Similar
Apr 29, 2024
Author: Salman Karim
Background tasks are crucial in many software applications, and scheduling them to run periodically or at specific times is a common requirement. In the .NET ecosystem, Quartz.NET provides a robust and flexible framework for scheduling such tasks. Let’s delve into...
Jun 7, 2024
Author: Dev Leader
In software engineering, composition plays an important role in object-oriented programming. If you’ve come across other articles or videos I’ve put out about object-oriented programming, you’ll know that I try to push composition over inheritance as much as I can....
Apr 3, 2023
Author: Shubhadeep Chattopadhyay
Clean code is a set of programming practices that emphasize the readability, maintainability, and simplicity of code. Writing clean code is essential because it helps developers to understand and modify code more efficiently, which can save time and reduce the...
Aug 19, 2024
Author: Mukesh Murugan
In this guide, we will learn how to implement Advanced Pagination in ASP.NET Core WebApi with ease. Pagination is one of the most important concepts while building RESTful APIs. You would have seen several public APIs implementing this feature for...
Send message
Type
Email
Your name
*Message