Пример #1
0
        public static FlightsInfo ReadCSV(string path)
        {
            using TextFieldParser csvParser = new TextFieldParser(path);
            csvParser.CommentTokens         = new string[] { COMMENT_TOKEN };
            csvParser.SetDelimiters(new string[] { DELIMITER });
            csvParser.HasFieldsEnclosedInQuotes = true;

            // Skip the row with the column names
            csvParser.ReadLine();

            var flightsInfo = new FlightsInfo();

            string[] fields;
            var      counter = 0;

            while (!csvParser.EndOfData)
            {
                // Read current line fields, pointer moves to the next line
                fields = csvParser.ReadFields();
                CreateFlight(fields, flightsInfo);
                if (++counter % 10000 == 0)
                {
                    Console.WriteLine("Read {0} lines", counter);
                }
            }

            if (counter % 10000 != 0)
            {
                Console.WriteLine("Read {0} lines", counter);
            }
            return(flightsInfo);
        }
Пример #2
0
        /// <summary>
        /// Based on readen data, creates flight object and adds it to a FlightsInfo object
        /// </summary>
        /// <param name="fields">Readen data fields</param>
        /// <param name="flightsInfo">FlightsInfo object to add the new flight to</param>
        private static void CreateFlight(string[] fields, FlightsInfo flightsInfo)
        {
            var origin         = GetField(fields, "Origin");
            var dest           = GetField(fields, "Destination");
            var airline        = GetField(fields, "Airline");
            var depDate        = ConvertToDate(GetField(fields, "DepDate"));
            var depTime        = ConvertToMinutes(GetField(fields, "CRSDepTime"));
            var depDelay       = ConvertToInt(GetField(fields, "DepDelay"));
            var crsElapsedTime = ConvertToMinutes(GetField(fields, "CRSElapsedTime"));
            var arrDelay       = ConvertToInt(GetField(fields, "ArrDelay"));
            var distance       = ConvertToInt(GetField(fields, "Distance"));

            if (depDate == DateTime.MinValue || depTime == -1 || crsElapsedTime == -1 || !distance.HasValue)
            {
                return;
            }

            flightsInfo.AddFlight(origin, dest, airline, depDate.AddMinutes(depTime),
                                  depDate.AddMinutes(depTime).AddMinutes(crsElapsedTime), depDelay, arrDelay, distance.Value);
        }