/// <summary> /// Returns page of items from the query. /// </summary> /// <typeparam name="TEntity">Type of items.</typeparam> /// <param name="query">Query to query.</param> /// <param name="continuationToken">Continuation token string.</param> /// <param name="cancellation">Cancellation.</param> /// <returns>A <see cref="Task{TResult}" /> representing the result of the asynchronous operation.</returns> public static async Task <PaginatedResponse <TEntity> > ToPageAsync <TEntity>( this IODataQueryable <TEntity> query, IPaginatedRequest request, CancellationToken cancellation = default) { var newQuery = query.Skip(request.Skip); newQuery.Take = request.Take; var items = await query.Context.Provider.RetrieveItemsAsync(newQuery, cancellation); return(new PaginatedResponse <TEntity> { Items = items.Items.ToList(), HasMore = items.HasMore, Take = request.Take, Skip = request.Skip, Total = items.Total, }); }