C#C
C#3y ago
linqisnice

❔ 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?

      
 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();
Was this page helpful?