public async Task <PaginatedResult <Category> > Handle(CategoryListQuery request, CancellationToken cancellationToken) { var query = _context.Categories.Where(c => c.IsArchived == false); // if provided, apply filter if (string.IsNullOrEmpty(request.Search) == false) { var labelFilter = request.Search.ToLowerInvariant(); query = query.Where(c => c.Label.ToLowerInvariant() == labelFilter); } var totalCnt = await query.CountAsync(cancellationToken); var pagedQuery = request.Modify(query); var result = await pagedQuery.ToListAsync(cancellationToken); return(new PaginatedResult <Category>(result, request.Page, request.PerPage, totalCnt)); }