/// <summary> /// 分页 /// </summary> /// <typeparam name="TDto">查询对象</typeparam> /// <param name="paging">分页对象</param> /// <param name="specification">查询对象</param> /// <param name="pagingBefore">分页前</param> /// <param name="pagingAfter">分页后</param> /// <returns></returns> public virtual IPagingResult <TDto> Paging <TDto>(IPaging paging, ISpecification <TDto> specification, Func <IQueryable <TDto>, IQueryable <TDto> > pagingBefore = null, Func <IQueryable <TDto>, IQueryable <TDto> > pagingAfter = null) { var query = this._storage.AsQueryable <TDto>(); if (specification != null && specification.Expression != null) { query = query.Where(specification.Expression); } paging.TotalNumber = query.Count(); if (pagingBefore != null) { query = pagingBefore(query); } query = query.Skip((paging.PageIndex - 1) * paging.PageSize) .Take(paging.PageSize); if (pagingAfter != null) { query = pagingAfter(query); } return(PagingResult.Build(paging, query.ToList())); }