public static TBuilder SortBy <TBuilder, TRequest, TEntity, TProperty>(
            this RequestEntityConfigBuilderCommon <TRequest, TEntity, TBuilder> config,
            Expression <Func <TEntity, TProperty> > sortColumn)
            where TEntity : class
            where TBuilder : RequestEntityConfigBuilderCommon <TRequest, TEntity, TBuilder>
        {
            var builder = new BasicSortBuilder <TRequest, TEntity>();

            builder.SortBy(sortColumn);

            var sorterFactory = builder.Build();

            return(config.SetSorter(sorterFactory));
        }
        public static TBuilder SortByDescending <TBuilder, TRequest, TEntity>(
            this RequestEntityConfigBuilderCommon <TRequest, TEntity, TBuilder> config,
            string sortColumn)
            where TEntity : class
            where TBuilder : RequestEntityConfigBuilderCommon <TRequest, TEntity, TBuilder>
        {
            var builder = new BasicSortBuilder <TRequest, TEntity>();

            builder.SortBy(sortColumn).Descending();

            var sorterFactory = builder.Build();

            return(config.SetSorter(sorterFactory));
        }
        public static TBuilder SortByDescending <TBuilder, TRequest, TEntity, TProperty>(
            this RequestEntityConfigBuilderCommon <TRequest, TEntity, TBuilder> config,
            Expression <Func <TEntity, TProperty> > sortColumn,
            Action <BasicSortClauseBuilder <TRequest, TEntity> > andThen)
            where TEntity : class
            where TBuilder : RequestEntityConfigBuilderCommon <TRequest, TEntity, TBuilder>
        {
            var builder = new BasicSortBuilder <TRequest, TEntity>();

            andThen(builder.SortBy(sortColumn).Descending());

            var sorterFactory = builder.Build();

            return(config.SetSorter(sorterFactory));
        }