使用
public static PagedList<FrameWorkInfo> GetFrameWorks(int pageIndex = 1, int pageSize = 20)
{
var db = new DefaultDbContext();
return db.FrameWorkInfos
.Where(a => a.IsDeleted == false)
.ToPagedList(pageIndex, pageSize);
}
Extensions
using System.Collections.Generic;
namespace Demo.Model
{
public class PagedList<TEntity>
where TEntity : new()
{
/// <summary>
/// 页码
/// </summary>
public int PageIndex { get; set; }
/// <summary>
/// 页容量
/// </summary>
public int PageSize { get; set; }
/// <summary>
/// 总条数
/// </summary>
public int TotalCount { get; set; }
/// <summary>
/// 总页数
/// </summary>
public int TotalPages { get; set; }
/// <summary>
/// 当前页集合
/// </summary>
public IEnumerable<TEntity> Items { get; set; }
/// <summary>
/// 是否有上一页
/// </summary>
public bool HasPrevPages { get; set; }
/// <summary>
/// 是否有下一页
/// </summary>
public bool HasNextPages { get; set; }
}
public class PagedList : PagedList<object>
{
}
}
using System;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using CheckFrameWorkVersion.Model;
using Microsoft.EntityFrameworkCore;
namespace Demo.MyExtensions
{
public static class PagedQueryableExtensions
{
public static PagedList<TEntity> ToPagedList<TEntity>(this IQueryable<TEntity> entities, int pageIndex = 1,
int pageSize = 20)
where TEntity : new()
{
if (pageIndex <= 0)
throw new InvalidOperationException($"{nameof(pageIndex)} must be a positive integer greater than 0.");
var totalCount = entities.Count();
var items = entities.Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList();
var totalPages = (int)Math.Ceiling(totalCount / (double)pageSize);
return new PagedList<TEntity>
{
PageIndex = pageIndex,
PageSize = pageSize,
Items = items,
TotalCount = totalCount,
TotalPages = totalPages,
HasNextPages = pageIndex < totalPages,
HasPrevPages = pageIndex - 1 > 0
};
}
public static async Task<PagedList<TEntity>> ToPagedListAsync<TEntity>(this IQueryable<TEntity> entities,
int pageIndex = 1, int pageSize = 20, CancellationToken cancellationToken = default)
where TEntity : new()
{
if (pageIndex <= 0)
throw new InvalidOperationException($"{nameof(pageIndex)} must be a positive integer greater than 0.");
var totalCount = await entities.CountAsync(cancellationToken);
var items = await entities.Skip((pageIndex - 1) * pageSize).Take(pageSize).ToListAsync(cancellationToken);
var totalPages = (int)Math.Ceiling(totalCount / (double)pageSize);
return new PagedList<TEntity>
{
PageIndex = pageIndex,
PageSize = pageSize,
Items = items,
TotalCount = totalCount,
TotalPages = totalPages,
HasNextPages = pageIndex < totalPages,
HasPrevPages = pageIndex - 1 > 0
};
}
}
}
版权声明:本文为qq_37214567原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。