static void FindWorstAirports()
{
List<Airport> airports = new List<Airport>();
string[] lines = File.ReadAllLines(AirlinePerformanceFileName);
for (int i = 1; i < lines.Length; ++i)
{
string line = lines[i];
string[] parts = line.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
if (parts.Length != 7)
continue;
// Create and fill up a unique airport list with airport objects
// Set the total delay and flight count properties for each object
Airport departureAirport = new Airport();
Airport arrivalAirport = new Airport();
departureAirport.AirportName = parts[1];
arrivalAirport.AirportName = parts[2];
if (!airports.Exists(a => a.AirportName == departureAirport.AirportName))
airports.Add(departureAirport);
if (!airports.Exists(a => a.AirportName == arrivalAirport.AirportName))
airports.Add(arrivalAirport);
airports.Find(x => x.AirportName == departureAirport.AirportName).TotalDepartureDelay += int.Parse(parts[3]);
airports.Find(x => x.AirportName == departureAirport.AirportName).DepartureFlightCount++;
airports.Find(x => x.AirportName == arrivalAirport.AirportName).TotalArrivalDelay += int.Parse(parts[4]);
airports.Find(x => x.AirportName == arrivalAirport.AirportName).ArrivalFlightCount++;
}
List<Airport> worstAirportToFlyFrom = airports.OrderByDescending(a => a.AverageDepartureDelay).ToList();
List<Airport> worstAirportToFlyTo = airports.OrderByDescending(a => a.AverageArrivalDelay).ToList();
Console.WriteLine("The worst airport to fly from is {0} with an average departure delay of {1}.",
worstAirportToFlyFrom.First().AirportName, worstAirportToFlyFrom.First().AverageDepartureDelay);
Console.WriteLine("The worst airport to fly to is {0} with an average arrival delay of {1}.",
worstAirportToFlyTo.First().AirportName, worstAirportToFlyTo.First().AverageArrivalDelay);
}