/// <summary>
    /// 规约求值分页列表。
    /// </summary>
    /// <typeparam name="T">指定的类型。</typeparam>
    /// <param name="queryable">给定的 <see cref="IQueryable{T}"/>。</param>
    /// <param name="pageAction">给定的分页动作。</param>
    /// <param name="specification">给定的 <see cref="IEntitySpecification{T}"/>(可选)。</param>
    /// <returns>返回 <see cref="IPagingList{T}"/>。</returns>
    public static IPagingList <T> EvaluatePagingList <T>(this IQueryable <T> queryable,
                                                         Action <IPagingList <T> > pageAction,
                                                         IEntitySpecification <T>?specification = null)
        where T : class
    {
        IPagingList <T> list = new PagingList <T>(queryable);

        if (specification is not null)
        {
            list.Filtrate(query => specification.Evaluate(queryable));
        }

        pageAction(list);

        return(list);
    }
    /// <summary>
    /// 规约求值分页列表。
    /// </summary>
    /// <typeparam name="T">指定的类型。</typeparam>
    /// <param name="queryable">给定的 <see cref="IQueryable{T}"/>。</param>
    /// <param name="pageAction">给定的分页动作。</param>
    /// <param name="specification">给定的 <see cref="IEntitySpecification{T}"/>(可选)。</param>
    /// <param name="cancellationToken">给定的 <see cref="CancellationToken"/>(可选)。</param>
    /// <returns>返回一个包含 <see cref="PagingList{T}"/> 的异步操作。</returns>
    public static Task <IPagingList <T> > EvaluatePagingListAsync <T>(this IQueryable <T> queryable,
                                                                      Action <IPagingList <T> > pageAction, IEntitySpecification <T>?specification = null,
                                                                      CancellationToken cancellationToken = default)
        where T : class
    {
        IPagingList <T> list = new PagingList <T>(queryable);

        if (specification is not null)
        {
            list.Filtrate(query => specification.Evaluate(queryable));
        }

        return(cancellationToken.RunTask(() =>
        {
            pageAction(list);

            return list;
        }));
    }