Files
juipnet/Infrastructure/Hncore.Infrastructure/EntitiesExtension/IQueryableExtend.cs
“wanyongkang” ed3b2c653e 接口文件
2024-04-10 13:55:27 +08:00

107 lines
3.1 KiB
C#

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<T>
/// <summary>
/// 返回IQueryable前几条数据
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="query"></param>
/// <param name="TopN"></param>
/// <returns></returns>
public static IQueryable<T> TopN<T>(this IQueryable<T> query, int TopN)
{
return query.Take(TopN);
}
#endregion
#region IQueryable<T>
/// <summary>
/// 对IQueryable进行分页
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="query"></param>
/// <param name="PageSize">每页多少条数据</param>
/// <param name="PageIndex">当前页</param>
/// <returns></returns>
public static IQueryable<T> QueryPager<T>(this IQueryable<T> 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<T>
/// <summary>
/// 得到IQueryable的分页后实体集合
/// </summary>
/// <param name="query"></param>
/// <param name="pageSize">每页多少条数据</param>
/// <param name="pageIndex">当前页</param>
/// <param name="isTotal">是否统计总行数</param>
/// <returns></returns>
public static PageData<T> ListPager<T>(this IQueryable<T> query, int pageSize, int pageIndex, bool isTotal)
{
PageData<T> list = new PageData<T>();
if (isTotal)
{
list.RowCount = query.Count();
}
list.List = query.QueryPager<T>(pageSize, pageIndex).ToList();
return list;
}
/// <summary>
/// 得到IQueryable的分页后实体集合
/// </summary>
/// <param name="query"></param>
/// <param name="pageSize">每页多少条数据</param>
/// <param name="pageIndex">当前页</param>
/// <param name="isTotal">是否统计总行数</param>
/// <returns></returns>
public static async Task<PageData<T>> ListPagerAsync<T>(this IQueryable<T> query, int pageSize, int pageIndex,
bool isTotal)
{
PageData<T> list = new PageData<T>();
if (isTotal)
{
list.RowCount = await query.CountAsync();
}
list.List = await query.QueryPager<T>(pageSize, pageIndex).ToListAsync();
return list;
}
#endregion
}
}