40 lines
1.3 KiB
C#
40 lines
1.3 KiB
C#
using System;
|
||
using System.Collections.Generic;
|
||
using System.Linq;
|
||
using System.Text;
|
||
using System.Threading.Tasks;
|
||
using XP.Common.Database.Models;
|
||
|
||
namespace XP.Common.Database.Helpers
|
||
{
|
||
/// <summary>
|
||
/// 分页计算辅助工具
|
||
/// </summary>
|
||
public static class PaginationHelper
|
||
{
|
||
/// <summary>
|
||
/// 计算分页偏移量(SQLite OFFSET)
|
||
/// </summary>
|
||
public static int CalculateOffset(PaginationRequest pagination)
|
||
{
|
||
if (pagination.PageIndex < 1) pagination.PageIndex = 1;
|
||
if (pagination.PageSize < 1) pagination.PageSize = 20;
|
||
return (pagination.PageIndex - 1) * pagination.PageSize;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 验证并修正分页参数
|
||
/// </summary>
|
||
public static PaginationRequest ValidateAndFix(PaginationRequest pagination)
|
||
{
|
||
var fixedPagination = new PaginationRequest
|
||
{
|
||
PageIndex = pagination.PageIndex < 1 ? 1 : pagination.PageIndex,
|
||
PageSize = pagination.PageSize < 1 ? 20 : (pagination.PageSize > 1000 ? 1000 : pagination.PageSize),
|
||
OrderBy = pagination.OrderBy ?? string.Empty
|
||
};
|
||
return fixedPagination;
|
||
}
|
||
}
|
||
}
|