Pagination
Sorting is easy to implement. You filter object just should inherit from PaginationFilterBase.
After you inherit, PaginationFilterBase applies query, sorting and pagination when you call ApplyFilter method.
Showcase
[HttpGet]
public IActionResult Get([FromQuery]BookFilter filter)
{
var result = db.Books.ApplyFilter(filter).ToList();
return Ok(result);
}
Implementation
You just need to create a Filter object that includes properties which is able to filter.
public class BookFilter : PaginationFilterBase // <-- Just inherit PaginationFilterBase
{
public string Title { get; set; }
public string Author { get; set; }
public int? Year { get; set; }
// ...
}
Usage
Now your querystring has 2 more parameter. page and perPage.
/books?page=2/books?perPage=16/books?page=2&perPage=16