using System.Collections.Generic;
public static void Main()
var january = new Month("January");
january.Measurements.Add(new Measurement { Day = "Day1", Temperature = 22 });
january.Measurements.Add(new Measurement { Day = "Day2", Temperature = 25 });
january.Measurements.Add(new Measurement { Day = "Day3", Temperature = 26 });
january.Measurements.Add(new Measurement { Day = "Day4", Temperature = 18 });
january.Measurements.Add(new Measurement { Day = "Day5", Temperature = 16 });
january.Measurements.Add(new Measurement { Day = "Day6", Temperature = 17 });
var months = new Dictionary<string, Month>();
months.Add(january.Name, january);
var selectedValue = "January";
if (months.ContainsKey(selectedValue)) {
var selectedMonth = months[selectedValue];
var max = selectedMonth.MaxByTemp;
string averageTemp = string.Format("{0:0.00}", selectedMonth.Average);
Console.WriteLine(selectedMonth.Name + ": Max " + max.Temperature +
" (on " + max.Day + ") Avg " + averageTemp);
throw new KeyNotFoundException("Month not found: " + selectedValue);
public Month(string name) {
Measurements = new List<Measurement>();
public string Name { get; private set; }
public ICollection<Measurement> Measurements { get; private set;}
public Measurement MinByTemp { get { return Measurements.OrderBy(m => m.Temperature).First(); } }
public Measurement MaxByTemp { get { return Measurements.OrderBy(m => m.Temperature).Last(); } }
public double Average { get { return Measurements.Average(r => r.Temperature); } }
public class Measurement {
public string Day { get; set; }
public int Temperature { get; set; }