public static PagingResult <T> ToPagedResult <T>(this IEnumerable <T> input, PagingParameters pagingParameters) { if (input == null) { throw new ArgumentNullException(nameof(input)); } if (pagingParameters == null) { throw new ArgumentNullException(nameof(pagingParameters)); } var offset = pagingParameters.Cursor.IsStart ? 0 : long.Parse(pagingParameters.Cursor.ToString()); var totalCount = input.LongCount(); var resultItems = input.Skip((int)offset).Take(pagingParameters.Limit).ToList(); var continuationCursor = PagingCursor.FromOffset(offset + resultItems.Count); return(new PagingResult <T>(resultItems, totalCount, continuationCursor)); }
public PagingParameters(PagingCursor cursor, int limit = DefaultLimit) { Cursor = cursor; Limit = limit; }
public PagingResult(IReadOnlyList <T> items, long totalItemCount, PagingCursor continuationCursor) { Items = items ?? throw new ArgumentNullException(nameof(items)); TotalItemCount = totalItemCount; ContinuationCursor = continuationCursor; }