/// <summary> /// 从 <see cref="IDbQueryable<TElement>"/> 创建分页记录 <see cref="PagedList<TElement>"/> /// </summary> /// <typeparam name="TElement">返回类型</typeparam> /// <param name="source">数据来源</param> /// <param name="pageIndex">当前页</param> /// <param name="pageSize">页长,1024表示取所有记录</param> /// <returns></returns> public static PagedList <TElement> ToPagedList <TElement>(this IDbQueryable <TElement> source, int pageIndex, int pageSize = 10) { IList <TElement> result = null; int rowCount = 0; int pages = 0; if (pageSize == 1024) { result = source.ToList(); rowCount = result.Count; pageIndex = 1; pages = 1; } else { if (pageSize == 0) { pageSize = 10; } rowCount = source.Count(); if (rowCount == 0) { result = new List <TElement>(0); } else { pages = rowCount / pageSize; if (rowCount % pageSize > 0) { ++pages; } if (pageIndex > pages) { pageIndex = pages; } if (pageIndex < 1) { pageIndex = 1; } result = source.ToList(pageIndex, pageSize); } } return(new PagedList <TElement>(result, pageIndex, pageSize, rowCount)); }
/// <summary> /// 从 <see cref="IDbQueryable<TElement>"/> 创建 <see cref="PagedList<TElement>"/> /// pageSize = 1024 表示取所有 /// </summary> public static PagedList <TElement> ToPagedList <TElement>(this IDbQueryable <TElement> source, int pageIndex, int pageSize = 10) { IList <TElement> result = null; int totalCount = 0; int totalPages = 0; if (pageSize == 1024) { result = source.ToList(); totalCount = result.Count; pageIndex = 1; totalPages = 1; } else { if (pageSize == 0) { pageSize = 10; } totalCount = source.Count(); totalPages = totalCount / pageSize; if (totalCount % pageSize > 0) { ++totalPages; } if (pageIndex > totalPages) { pageIndex = totalPages; } if (pageIndex < 1) { pageIndex = 1; } result = source.ToList(pageIndex, pageSize); } return(new PagedList <TElement>(result, pageIndex, pageSize, totalCount)); }
/// <summary> /// 返回序列中的元素数量 /// </summary> public static int Count <TSource>(this IDbQueryable <TSource> source) { return(source.Count(null)); }