private async Task LoadProductCustomerReviewsAsync(List <Product> products) { if (products == null) { throw new ArgumentNullException(nameof(products)); } foreach (var product in products) { //Lazy loading for customer reviews product.CustomerReviews = new MutablePagedList <Model.CustomerReviews.CustomerReview>((pageNumber, pageSize, sortInfos) => { var criteria = new CustomerReviewSearchCriteria { ProductIds = new[] { product.Id }, PageNumber = pageNumber, PageSize = pageSize, Sort = SortInfo.ToString(sortInfos), }; return(_customerReviewService.SearchReviews(criteria)); }, 1, CustomerReviewSearchCriteria.DefaultPageSize); product.AverageRating = await _customerReviewService.GetAverageRatingAsync(product.Id); } }