/// <summary>
        ///     Gets all paginated registers.
        ///     Obtém todas os registros cadastrados por paginação.
        /// </summary>
        public virtual IQueryable <TEntity> GetByPaged(
            IQueryable <TEntity> query,
            Func <TEntity, object> orderBy,
            OrderByDirectionEnum orderByDirection,
            IPager pager)
        {
            if (orderBy != null)
            {
                if (orderByDirection == OrderByDirectionEnum.Ascending)
                {
                    query = query.OrderBy(orderBy).AsQueryable();
                }
                else if (orderByDirection == OrderByDirectionEnum.Descending)
                {
                    query = query.OrderByDescending(orderBy).AsQueryable();
                }
            }

            if (pager.HasPagination)
            {
                query = query.Skip((pager.PageNumber - 1) * pager.PageSize)
                        .Take(pager.PageSize)
                        .AsQueryable();
            }

            return(query);
        }
        /// <summary>
        ///     Gets all paginated registers.
        ///     Obtém todas os registros cadastrados por paginação.
        /// </summary>
        public virtual IQueryable <TEntity> GetBy(
            Expression <Func <TEntity, bool> > expression,
            Func <TEntity, object> orderBy,
            OrderByDirectionEnum orderByDirection,
            IPager pager)
        {
            var items = this.DbSet.Where(expression);

            if (orderByDirection == OrderByDirectionEnum.Ascending)
            {
                items = items.OrderBy(orderBy)
                        .Skip((pager.PageNumber - 1) * pager.PageSize)
                        .Take(pager.PageSize)
                        .AsQueryable();
            }
            else if (orderByDirection == OrderByDirectionEnum.Descending)
            {
                items = items.OrderByDescending(orderBy)
                        .Skip((pager.PageNumber - 1) * pager.PageSize)
                        .Take(pager.PageSize)
                        .AsQueryable();
            }

            return(items);
        }