示例#1
0
        public static FlightContext FromFile(string filename)
        {
            FlightContext flightContext = new FlightContext();

            using FileStream fs = new FileStream(filename, FileMode.Open, FileAccess.Read);
            string content = JsonDocument.Parse(fs)
                             .RootElement
                             .GetProperty("monitor")
                             .GetProperty("departure")
                             .GetRawText();
            IEnumerable <Departure> departures = JsonSerializer
                                                 .Deserialize <IEnumerable <Departure> >(content,
                                                                                         new JsonSerializerOptions {
                PropertyNameCaseInsensitive = true
            });

            flightContext.Departures = departures;
            return(flightContext);
        }
示例#2
0
        private static void Main(string[] args)
        {
            int[]         points  = new int[8];
            int           i       = 0;
            FlightContext db      = FlightContext.FromFile("departure.json");
            var           results = ReadResults("results.json");

            // Musterbeispiel: Liefere Infos zum Flughafen Dublin (IATA Code ist DUB)
            IEnumerable <Destination> result = from d in db.Destinations
                                               where d.IataCode == "DUB"
                                               select d;


            // Beispiel 1: Welche Airline hat keine Webseite (das Property WebSite ist null oder leer).
            //             Liefere eine Liste von Strings mit dem Namen der Airline (Property Name)
            IEnumerable <string> result1 = null;

            points[i++] = results["result1"].CheckResult(result1);

            // Beispiel 2: Welche Städte sind in Österreich (NameEn ist "Austria")? Liefere eine
            //             Liste von Strings mit dem deutschen Namen (NameDe).
            IEnumerable <string> result2 = null;

            points[i++] = results["result2"].CheckResult(result2);

            // Beispiel 3: Welche Städte in Deutschland (Country.NameEn ist "Germany") wurden
            //             zwischen 5:00 und 5:59 UTC (Departure.Scheduledatetime.Hour ist 5)
            //             angeflogen? Liefere eine Stringliste mit dem deutschen Namen
            //             (City.NameDe). Filtere doppelte Werte heraus.
            //             Beachte, dass ein Abflug mehrere Stopps (Destinations) haben kann.
            //             Wenn bei einem dieser Stopps eine deutsche Stadt dabei ist, ist diese
            //             aufzulisten.
            IEnumerable <string> result3 = null;

            points[i++] = results["result3"].CheckResult(result3);


            // Beispiel 4: Welche Flugzeugtypen (Aircraft.Description) von Boeing sind im
            //             Datenbestand vorhanden? Der Wert von Description beginnt bei diesen
            //             Flugzeugen mit dem String "Boeing". Verwende string.StartsWith() für diese
            //             überprüfung. Liefere eine Stringliste mit den Description Feldern dieser
            //             Flugzeuge. Sortiere die Werte der Liste aufsteigend.
            IOrderedEnumerable <string> result4 = null;

            points[i++] = results["result4"].CheckResult(result4);

            // Beispiel 5: Wie viele Abflüge fanden pro Terminal statt? Das Terminal ist in
            //             Checkin gespeichert. Betrachte nur die Daten, bei denen der Wert von
            //             Terminal nicht null ist.
            var result5 = null as object;

            points[i++] = results["result5"].CheckResult(result5);

            // Beispiel 6: Wie groß ist die durchschnittliche Verspätung? Betrachte nur die Daten
            //             in Departues, wo Actualdatetime größer als Scheduledatetime ist.
            //             Der Mittelwert ist in Minuten zu ermitteln. Datumswerte können in C#
            //             einfach subtrahiert werden. Das Ergebnis ist ein TimeSpan, wo das
            //             Property TotalMinutes verwendet werden kann.
            //             Runde das Ergebnis mit Math.Round() auf 2 Kommastellen.
            double result6 = 0;

            points[i++] = results["result6"].CheckResult(result6);

            // Beispiel 7: Wie oft wurden Städte in Österreich angeflogen? Filtere die Daten nach
            //             Country.NameEn gleich "Austria". Gib eine Liste mit der deutschen
            //             Bezeichnung der Stadt (City.NameDe) und der Anzahl zurück.
            var result7 = null as object;

            points[i++] = results["result7"].CheckResult(result7);


            // Beispiel 8: Welche Airline (Airline.Name) flog am Häufigsten ab? Ermittle dafür
            //             zuerst die Anzahl der häufigsten Abflüge. Danach verwende diesen Wert,
            //             um deine Gruppierungsabfrage nach diesem Wert zu filtern.
            var result8 = null as object;

            points[i++] = results["result8"].CheckResult(result8);

            // *************************************************************************************
            Console.WriteLine("Beispiel " + string.Join(" ", Enumerable.Range(1, 8)));
            Console.WriteLine("Punkte   " + string.Join(" ", points));
            int    sum     = points.Sum();
            double percent = (double)sum / 8.0;
            int    note    = percent > 0.875 ? 1 : percent > 0.75 ? 2 : percent > 0.625 ? 3 : percent > 0.5 ? 4 : 5;

            Console.WriteLine($"Note: {note}");
        }