public void CreateMonthlyAggregateRecord(int month, int year) { MonthlyAggregates.Add(new MonthlyAggregates { Month = Dictionaries.MonthName[month], FirstRecordedDate = DailyRainData[0].DateRecorded, LastRecordedDate = DailyRainData[DailyRainData.Count - 1].DateRecorded, TotalRainfall = Math.Round(DailyRainData.Sum(d => d.Rainfall), 2), AverageDailyRainfall = Math.Round(DailyRainData.Average(d => d.Rainfall), 2), DaysWithRainfall = DailyRainData.Where(dr => dr.Rainfall > 0).Count(), DaysWithNoRainfall = (!IsLeapYear(year) && month == February) ? Dictionaries.MonthDays[month] - 1 - DailyRainData.Where(dr => dr.Rainfall > 0).Count() : Dictionaries.MonthDays[month] - DailyRainData.Where(dr => dr.Rainfall > 0).Count() }); DailyRainData.Clear(); }
public void CreateYearlyAggregateRecord(int year, int longestNumberOfDaysRaining) { YearlyAggregates.Add(new YearlyAggregates { Year = year, FirstRecordedDate = MonthlyAggregates[0].FirstRecordedDate, LastRecordedDate = MonthlyAggregates[MonthlyAggregates.Count - 1].LastRecordedDate, TotalRainfall = Math.Round(MonthlyAggregates.Sum(m => m.TotalRainfall), 2), AverageDailyRainfall = Math.Round(MonthlyAggregates.Sum(m => m.AverageDailyRainfall), 2), DaysWithNoRainfall = MonthlyAggregates.Sum(m => m.DaysWithNoRainfall), DaysWithRainfall = MonthlyAggregates.Sum(m => m.DaysWithRainfall), LongestNumberOfDaysRaining = longestNumberOfDaysRaining, MonthlyAggregates = MonthlyAggregates.ToList(), }); MonthlyAggregates.Clear(); }