using System.Collections; using System.Collections.Generic; using System.Linq; namespace Pinwheel.Reporting { public class AwardReport : IEnumerable { private readonly IEnumerable awards; public long TotalCount { get { return awards.Sum(a => a.Count); } } private double? _TotalScore; public double TotalScore { get { if (_TotalScore == null && awards != null && TotalCount > 0) _TotalScore = awards.Sum(a => a.TotalScore); return _TotalScore.HasValue ? _TotalScore.Value : default(double); } } public AwardReport(IEnumerable awards) { this.awards = awards; } public IEnumerator GetEnumerator() { return awards.GetEnumerator(); } IEnumerator IEnumerable.GetEnumerator() { return GetEnumerator(); } } }