AirlineDelays.FlightInfo.ReadFlightsFromFile C# (CSharp) Method

ReadFlightsFromFile() public static method

public static ReadFlightsFromFile ( string fileName ) : List
fileName string
return List
        public static List<FlightInfo> ReadFlightsFromFile(string fileName)
        {
            List<FlightInfo> flights = new List<FlightInfo>();
            string[] lines = File.ReadAllLines(fileName);
            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;

                flights.Add(new FlightInfo(parts));
            }
            return flights;
        }

Usage Example

        static void Main(string[] args)
        {
            List <FlightInfo> flights = FlightInfo.ReadFlightsFromFile("airline-on-time-performance-sep2014-us.csv");

            var query1 = from flight in flights
                         where flight.Origin == "Boston MA"
                         where flight.Destination == "Chicago IL"
                         select flight.ArrivalDelay;

            var query2 = (from flight in flights
                          where flight.Destination == "Monterey CA"
                          select flight.Origin).Distinct();

            var query3 = (from flight in flights
                          orderby flight.ArrivalDelay descending
                          select new { flight.Origin, flight.Destination, flight.ArrivalDelay }
                          ).Take(10);

            var query4 = from flight in flights.Take(20)
                         select flight.Destination;

            var query5 = (from flight in flights
                          select flight.ArrivalDelay).Average();

            var query6 = (from flight in flights
                          orderby flight.Distance ascending
                          select new { flight.Origin, flight.Destination, flight.Distance }
                          ).Take(1);

            var query7 = (from flight in flights
                          where flight.Origin == "San Francisco CA"
                          orderby flight.Distance descending
                          select flight
                          ).Take(1);

            var query8 = (from flight in flights
                          where flight.Origin == "Boston MA"
                          let weightedDelay = flight.ArrivalDelay / (double)flight.Distance
                                              orderby weightedDelay descending
                                              select flight
                          ).Take(1);

            var query9 = (from flight in flights
                          where flight.Origin == "Seattle WA"
                          where flight.ArrivalDelay <= 0
                          select flight
                          ).Count();

            var query10 = (from flight in flights
                           group flight.DepartureDelay by flight.Origin into g
                           let averageDelay = g.Average()
                                              orderby averageDelay descending
                                              select new { Airport = g.Key, DepartureDelay = averageDelay }
                           ).Take(10);

            var query11 = (from flight in flights
                           where flight.Origin == "New York NY"
                           group flight.ArrivalDelay by flight.Airline into g
                           let averageDelay = g.Average()
                                              orderby averageDelay descending
                                              select new { Airline = g.Key, ArrivalDelay = averageDelay }
                           ).Take(1);

            var query12 = (from flight in flights
                           where flight.Airline == "AA"
                           group flight.DepartureDelay by flight.Origin into g
                           let averageDelay = g.Average()
                                              orderby averageDelay descending
                                              select new { Origin = g.Key, DepartureDelay = averageDelay }
                           ).Take(1);

            // Note: this query takes a long time to run. Either be patient, or make the file smaller
            // by removing some entries.
            var query13 = (from leg1 in flights
                           where leg1.Origin == "Boston MA"
                           from leg2 in flights
                           where leg2.Origin == leg1.Destination
                           where leg2.Destination == "Los Angeles CA"
                           let totalDelay = leg1.DepartureDelay + leg1.ArrivalDelay + leg2.DepartureDelay + leg2.ArrivalDelay
                                            group totalDelay by new { O1 = leg1.Origin, O2 = leg1.Destination, D = leg2.Destination } into g
                           let averageTotalDelay = g.Average()
                                                   orderby averageTotalDelay ascending
                                                   select g.Key
                           ).Take(1);
        }