Skip to content

Server Side Sayfalama ve Filtreleme Mantığına Uygun GetAll Fonksiyonunun Eklenmesi #4

@erengaygusuz

Description

@erengaygusuz

Merhaba,
GetAll fonksiyonlarında server side sayfalama için hazırlanmış bir fonksiyon yok. Aşağıdaki yapıya benzer sayfalama ve filtreleme mantığına uygun bir fonksiyon ekleyebilir misiniz? Ayrıca bu fonksiyonu result pattern eklentinizle uyumlu hale de getirebilirsiniz.

        public Tuple<int, int, IQueryable<TEntity>> GetAll(
            int page, int pageSize,
            Expression<Func<TEntity, bool>>? expression = null,
            bool trackChanges = false,
            Func<IQueryable<TEntity>, IIncludableQueryable<TEntity, object>>? include = null,
            Func<IQueryable<TEntity>, IOrderedQueryable<TEntity>>? orderBy = null)
        {
            IQueryable<TEntity> query = _appDbContext.Set<TEntity>();

            if (include != null)
            {
                query = include(query);
            }

            int totalCount = query.Count();
            int filteredCount = totalCount;

            if (expression != null)
            {
                query = query.Where(expression);
                filteredCount = query.Count();
            }

            if (orderBy != null)
            {
                query = orderBy(query);
            }

            query = query.Skip((page - 1) * pageSize).Take(pageSize);

            if (!trackChanges)
            {
                query = query.AsNoTracking();
            }

            return new Tuple<int, int, IQueryable<TEntity>>(totalCount, filteredCount, query);
        }

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions