Vlerx.Pagination
1.0.0
dotnet add package Vlerx.Pagination --version 1.0.0
NuGet\Install-Package Vlerx.Pagination -Version 1.0.0
<PackageReference Include="Vlerx.Pagination" Version="1.0.0" />
<PackageVersion Include="Vlerx.Pagination" Version="1.0.0" />
<PackageReference Include="Vlerx.Pagination" />
paket add Vlerx.Pagination --version 1.0.0
#r "nuget: Vlerx.Pagination, 1.0.0"
#:package Vlerx.Pagination@1.0.0
#addin nuget:?package=Vlerx.Pagination&version=1.0.0
#tool nuget:?package=Vlerx.Pagination&version=1.0.0
This library calculates the page number, selects the corresponding page, and finally returns the page and the related pagination metadata for futher useage as HTTP headrs or for HATEOAS link generation by providing a simple API. A PageFactory
which accepts an IQueryable<YourViewModel>
and a PageRequest
, and returns a PagedViewModel<YourViewModel>
How to use it
Install this nuget package.
Let's see the following query:
public IQueryable<User> ListUsers()
{
return DbContext.Users;
}
We want to paginate it as well as returning all the related pagination metadata.
public PagedViewModel<Users> ListUsers(PageRequest request)
{
pageFactory.Paginate(dbContext.Users, request);
}
readonly IPageFactory pageFactory;
Let's call it.
var page = ListUsers(new PageRequest{PageNumber = 1, PageSize = 10});
this is what it returns:
public class PagedViewModel<T>
{
public IQueryable<T> ItemsInThePage { get; }
public PageCounter Counter { get; }
}
The ItemsInThePage
is the result of slicing the requested page from the query parameter.
And the page counter is the metadata of the page:
public class PageCounter
{
public uint Number { get; }
public byte Size { get; }
public uint TotalItemCount { get; }
public uint TotalPageCount { get; }
public bool HasNext { get; }
public bool HasPrevious { get; }
}
The IPageFactory
can be easily injected by any IOC:
services.AddSingleton<IPageFactory, PageFactory>();
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last Updated |
---|---|---|
1.0.0 | 599 | 5/16/2020 |