/// <summary>
        ///  从 <see cref="IDbQueryable&lt;TElement&gt;"/> 创建分页记录 <see cref="PagedList&lt;TElement&gt;"/>
        /// </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));
        }
Exemplo n.º 2
0
        /// <summary>
        ///  从 <see cref="IDbQueryable&lt;TElement&gt;"/> 创建 <see cref="PagedList&lt;TElement&gt;"/>
        ///  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>
 ///  从 <see cref="IDbQueryable&lt;TSource&gt;"/> 创建一个数组
 /// </summary>
 public static TSource[] ToArray <TSource>(this IDbQueryable <TSource> source)
 {
     return(source.ToList <TSource>().ToArray());
 }