Ejemplo n.º 1
0
 public PagingResultEnvelope(IEnumerable <T> data, int totalCount, PagingParam pagingParam)
 {
     Data         = data;
     PageIndex    = pagingParam.PageIndex;
     PageSize     = pagingParam.PageSize;
     SortColumn   = pagingParam.SortColumn;
     SortOrder    = pagingParam.SortOrder;
     FilterColumn = pagingParam.FilterColumn;
     FilterQuery  = pagingParam.FilterQuery;
     TotalCount   = totalCount;
     TotalPages   = (int)Math.Ceiling(TotalCount / (double)PageSize);
 }
Ejemplo n.º 2
0
        public static async Task <PagingResultEnvelope <T> > ToPagingEnvelope(IQueryable <T> data, PagingParam pagingParam, CancellationToken cancellationToken = default)
        {
            pagingParam.PageSize = pagingParam.PageSize == 0 ? 10 : pagingParam.PageSize;
            if (!string.IsNullOrEmpty(pagingParam.SortColumn) && IsValidProperty(pagingParam.SortColumn))
            {
                pagingParam.SortOrder = !string.IsNullOrEmpty(pagingParam.SortOrder) && pagingParam.SortOrder.ToUpper() == "ASC" ? "ASC" : "DESC";
                data = data.OrderBy($"{pagingParam.SortColumn} {pagingParam.SortOrder}");
            }

            if (!string.IsNullOrEmpty(pagingParam.FilterColumn) && !string.IsNullOrEmpty(pagingParam.FilterQuery) &&
                IsValidProperty(pagingParam.FilterColumn))
            {
                var filter = string.Format("{0}.Contains(\"{1}\")", pagingParam.FilterColumn, pagingParam.FilterQuery);
                data = data.Where(filter);
            }
            var totalCount = await data.CountAsync();

            var result = await data
                         .Skip(pagingParam.PageSize *pagingParam.PageIndex)
                         .Take(pagingParam.PageSize)
                         .ToListAsync(cancellationToken);

            return(new PagingResultEnvelope <T>(result, totalCount, pagingParam));
        }