コード例 #1
0
        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);
        }