Files
OrpaonVision/OrpaonVision.Core/Results/PagedResult.cs
2026-04-06 22:04:05 +08:00

63 lines
1.6 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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
};
}
}