using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Hncore.Infrastructure.Data; using Hncore.Infrastructure.Extension; using Microsoft.EntityFrameworkCore; namespace Hncore.Infrastructure.EntitiesExtension { public static class IQueryableExtend { #region 返回IQueryable前几条数据 /// /// 返回IQueryable前几条数据 /// /// /// /// /// public static IQueryable TopN(this IQueryable query, int TopN) { return query.Take(TopN); } #endregion #region 对IQueryable进行分页 /// /// 对IQueryable进行分页 /// /// /// /// 每页多少条数据 /// 当前页 /// public static IQueryable QueryPager(this IQueryable query, int PageSize, int PageIndex) { if (PageIndex <= 0) { PageIndex = 1; } if (PageSize <= 0) { PageSize = 1; } if (PageSize > 0) return query.Skip((PageIndex - 1) * PageSize).Take(PageSize); return query; } #endregion #region 得到IQueryable的分页后实体集合 /// /// 得到IQueryable的分页后实体集合 /// /// /// 每页多少条数据 /// 当前页 /// 是否统计总行数 /// public static PageData ListPager(this IQueryable query, int pageSize, int pageIndex, bool isTotal) { PageData list = new PageData(); if (isTotal) { list.RowCount = query.Count(); } list.List = query.QueryPager(pageSize, pageIndex).ToList(); return list; } /// /// 得到IQueryable的分页后实体集合 /// /// /// 每页多少条数据 /// 当前页 /// 是否统计总行数 /// public static async Task> ListPagerAsync(this IQueryable query, int pageSize, int pageIndex, bool isTotal) { PageData list = new PageData(); if (isTotal) { list.RowCount = await query.CountAsync(); } list.List = await query.QueryPager(pageSize, pageIndex).ToListAsync(); return list; } #endregion } }