public async Task <TotalList <ProductVm> > Handle(GetProductsQuery request, CancellationToken cancellationToken) { var query = _context.Products.AsQueryable(); query = Filter(query, request); var total = await query.CountAsync(cancellationToken); query = Sort(query, request.Sorts()); query = SkipTake(query, request); var products = await query .ProjectTo <ProductVm>(_mapper.ConfigurationProvider) .ToListAsync(cancellationToken); return(new TotalList <ProductVm>(products, total)); }