/// <summary> /// 初始化枚举迭代器的新实例 /// </summary> /// <param name="move">获取下一页数据的委托</param> /// <param name="startPageIndex">起始页</param> /// <param name="pageSize">每个页面的数据数量</param> /// <param name="total"></param> public PageEnumerator(PageMoveDelegate <T> move, int startPageIndex, int pageSize, int total) { _move = move ?? throw new ArgumentNullException(nameof(move)); _startPageIndex = startPageIndex < 0 ? throw new ArgumentOutOfRangeException(nameof(startPageIndex)) : startPageIndex; _pageSize = pageSize < 0 ? throw new ArgumentOutOfRangeException(nameof(pageSize)) : pageSize; _total = total < 0 ? throw new ArgumentOutOfRangeException(nameof(total)) : total; _currentPageIndex = startPageIndex; _currentPageDatas = move(startPageIndex, pageSize, CancellationToken.None) .ConfigureAwait(false) .GetAwaiter() .GetResult(); TotalPageCount = (int)Math.Ceiling((total * 1.0) / pageSize); }
/// <summary> /// 初始化分页的枚举 /// </summary> /// <param name="move">用于开始翻页的委托</param> /// <param name="startPageIndex">起始页</param> /// <param name="pageSize">每页获取数据的数量</param> /// <param name="total"></param> public PageEnumerable(PageMoveDelegate <T> move, int startPageIndex, int pageSize, int total) { _move = move ?? throw new ArgumentNullException(nameof(move)); _total = total < 0 ? throw new ArgumentOutOfRangeException(nameof(total), ERROR_TOTAL) : total; _startPageIndex = startPageIndex < 1 ? throw new ArgumentOutOfRangeException(nameof(startPageIndex), ERROR_STARTPAGE) : startPageIndex; _pageSize = pageSize < 0 ? throw new ArgumentOutOfRangeException(nameof(pageSize), ERROR_PAGESIZE) : pageSize; }