예제 #1
0
        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);
        }
예제 #2
0
        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);
        }