❔ which of these queries is "better"? And will the second one work?
I'm trying to get the total results of the query before pagination to display it to the client. But when googling, some posts on stackoverflow said its impoossible without two separate queries. But it seems the second option is just one query? Or am i missing something in my code?
And this
var filteredListings = await _dbContext.Listings
.Where(listing => listing.GetAvailableAccomodations(request.Guests).Any())
.WithinRadius(request.Longitude, request.Latitude, FilterUtilities.LocationRadius)
.Where(listing => listing.ListingQualities.Any(quality => request.FilterIds.Contains(quality.QualityId)))
.Paginate(request.Page, FilterUtilities.PageSize)
.Include(x => x.ListingQualities)
.ThenInclude(x => x.Quality)
.ToListAsync();
var totalSearchResults = await _dbContext.Listings
.Where(listing => listing.GetAvailableAccomodations(request.Guests).Any())
.WithinRadius(request.Longitude, request.Latitude, FilterUtilities.LocationRadius)
.Where(listing => listing.ListingQualities.Any(quality => request.FilterIds.Contains(quality.QualityId))).CountAsync();
var filteredListings = await _dbContext.Listings
.Where(listing => listing.GetAvailableAccomodations(request.Guests).Any())
.WithinRadius(request.Longitude, request.Latitude, FilterUtilities.LocationRadius)
.Where(listing => listing.ListingQualities.Any(quality => request.FilterIds.Contains(quality.QualityId)))
.Paginate(request.Page, FilterUtilities.PageSize)
.Include(x => x.ListingQualities)
.ThenInclude(x => x.Quality)
.ToListAsync();
var totalSearchResults = await _dbContext.Listings
.Where(listing => listing.GetAvailableAccomodations(request.Guests).Any())
.WithinRadius(request.Longitude, request.Latitude, FilterUtilities.LocationRadius)
.Where(listing => listing.ListingQualities.Any(quality => request.FilterIds.Contains(quality.QualityId))).CountAsync();And this
var filteredListingsQuery = _dbContext.Listings
.GetListingsWithAvailableAccomodations(request.Guests, dateRange)
.WithinRadius(request.Longitude, request.Latitude, FilterUtilities.LocationRadius)
.Where(listing => listing.ListingQualities.Any(quality => request.FilterIds.Contains(quality.QualityId)));
var totalSearchResults = await filteredListingsQuery.CountAsync();
var filteredListings = await filteredListingsQuery.Paginate(request.Page, FilterUtilities.PageSize)
.Include(x => x.ListingQualities)
.ThenInclude(x => x.Quality)
.ToListAsync(); var filteredListingsQuery = _dbContext.Listings
.GetListingsWithAvailableAccomodations(request.Guests, dateRange)
.WithinRadius(request.Longitude, request.Latitude, FilterUtilities.LocationRadius)
.Where(listing => listing.ListingQualities.Any(quality => request.FilterIds.Contains(quality.QualityId)));
var totalSearchResults = await filteredListingsQuery.CountAsync();
var filteredListings = await filteredListingsQuery.Paginate(request.Page, FilterUtilities.PageSize)
.Include(x => x.ListingQualities)
.ThenInclude(x => x.Quality)
.ToListAsync();