63 lines
1.6 KiB
C#
63 lines
1.6 KiB
C#
namespace OrpaonVision.Core.Results;
|
||
|
||
/// <summary>
|
||
/// 分页结果。
|
||
/// </summary>
|
||
/// <typeparam name="T">数据项类型。</typeparam>
|
||
public sealed class PagedResult<T>
|
||
{
|
||
/// <summary>
|
||
/// 数据项列表。
|
||
/// </summary>
|
||
public IReadOnlyList<T> Items { get; init; } = [];
|
||
|
||
/// <summary>
|
||
/// 总记录数。
|
||
/// </summary>
|
||
public int TotalCount { get; init; }
|
||
|
||
/// <summary>
|
||
/// 页码(从1开始)。
|
||
/// </summary>
|
||
public int PageIndex { get; init; }
|
||
|
||
/// <summary>
|
||
/// 每页大小。
|
||
/// </summary>
|
||
public int PageSize { get; init; }
|
||
|
||
/// <summary>
|
||
/// 总页数。
|
||
/// </summary>
|
||
public int TotalPages => (int)Math.Ceiling((double)TotalCount / PageSize);
|
||
|
||
/// <summary>
|
||
/// 是否有上一页。
|
||
/// </summary>
|
||
public bool HasPreviousPage => PageIndex > 1;
|
||
|
||
/// <summary>
|
||
/// 是否有下一页。
|
||
/// </summary>
|
||
public bool HasNextPage => PageIndex < TotalPages;
|
||
|
||
/// <summary>
|
||
/// 创建成功的分页结果。
|
||
/// </summary>
|
||
/// <param name="items">数据项列表。</param>
|
||
/// <param name="totalCount">总记录数。</param>
|
||
/// <param name="pageIndex">页码。</param>
|
||
/// <param name="pageSize">每页大小。</param>
|
||
/// <returns>分页结果。</returns>
|
||
public static PagedResult<T> Success(IReadOnlyList<T> items, int totalCount, int pageIndex, int pageSize)
|
||
{
|
||
return new PagedResult<T>
|
||
{
|
||
Items = items,
|
||
TotalCount = totalCount,
|
||
PageIndex = pageIndex,
|
||
PageSize = pageSize
|
||
};
|
||
}
|
||
}
|