public override bool Equals(Object obj) { // Check for null values and compare run-time types. if (obj == null || GetType() != obj.GetType()) { return(false); } CityAveragedWeatherData other = (CityAveragedWeatherData)obj; return(State == other.State && City == other.City && AverageHighTemp == other.AverageHighTemp && AverageLowTemp == other.AverageLowTemp); }
public IEnumerable <CityAveragedWeatherData> AggregateWeatherData(WeatherData[] inputData) { Dictionary <String, AggregateTemp> temps = new Dictionary <string, AggregateTemp>(); foreach (WeatherData datum in inputData) { String name = GetName(datum); if (!temps.ContainsKey(name)) { temps.Add(name, new AggregateTemp() { HighTemp = datum.HighTemp, LowTemp = datum.LowTemp, SampleCount = 1 }); } else { temps[name].HighTemp += datum.HighTemp; temps[name].LowTemp += datum.LowTemp; temps[name].SampleCount++; } } List <CityAveragedWeatherData> results = new List <CityAveragedWeatherData>(); foreach (KeyValuePair <String, AggregateTemp> kvp in temps) { String[] names = SplitName(kvp.Key); CityAveragedWeatherData cityData = new CityAveragedWeatherData() { State = names[0], City = names[1], AverageHighTemp = kvp.Value.HighTemp / kvp.Value.SampleCount, AverageLowTemp = kvp.Value.LowTemp / kvp.Value.SampleCount }; results.Add(cityData); } return(results); }