private string Details() { var totals = _rentals .Select(rental => { var price = _pricer.GetPrice(rental.Movie); return(new { Amount = price.ComputeAmount(rental.Duration), Points = price.ComputePoints(rental.Duration), Movie = rental.Movie.Title }); }) .Aggregate( new { Amount = (Amount)0m, Points = 0, Details = "" }, (current, detail) => new { Amount = current.Amount.Add(detail.Amount), Points = current.Points + detail.Points, Details = Invariant($"{current.Details}\t{detail.Movie}\t{detail.Amount.Value:N1}\n") }); AmountOwed = totals.Amount; FrequentRenterPoints = totals.Points; return(totals.Details); }