/// <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,
            });
        }