/*-------------------------------------------------------------- * HTBLA-Leonding / Class: 4CHIF *-------------------------------------------------------------- * Hinterdorfer Jonas *-------------------------------------------------------------- * Description: SpaceShuttle *-------------------------------------------------------------- */ using System; using System.Linq; using SpaceShuttle.Tools; Console.WriteLine("Space-Shuttle"); Console.WriteLine("====================="); string fileNameShuttle = "SpaceShuttle.csv"; string fileNameShuttleName = "SpaceShuttleName.csv"; string fileNameShuttleStart = "SpaceShuttleStart.csv"; var shuttle = new CsvImport() { DateFormat = "dd.MM.yyyy", TimeFormat = "H:m" }.Read(fileNameShuttle); var shuttleName = new CsvImport().Read(fileNameShuttleName); var shuttleStart = new CsvImport() { DateFormat = "dd.MM.yyyy", TimeFormat = "H:m" }.Read(fileNameShuttleStart); #region Task1 Console.WriteLine("\nTask 1: All Space Shuttles"); Console.WriteLine("=========================="); var task1 = shuttle.Select(s => s); foreach (var s in task1) { Console.WriteLine($"{s.Name,-15} {s.OVNo,-10} {s.Remark}"); } #endregion #region Task2 Console.WriteLine("\nTask 2: All Shuttle Starts ordered by Launch Date"); Console.WriteLine("=================================================="); var task2 = shuttleStart.OrderBy(s => s.LaunchDate); foreach (var s in task2) { Console.WriteLine($"{s.No,3} {s.LaunchDate:dd.MM.yyyy} {s.Mission,-15} {s.Shuttle,-15} {s.LaunchPad,-10}"); } #endregion #region Task3 - join Console.WriteLine("\nTask 3: Shuttle Starts with Name Origin (Join)"); Console.WriteLine("==============================================="); var task3 = shuttleStart.Join( shuttleName, start => start.Shuttle, name => name.ShuttleName, (start, name) => new { start.No, start.LaunchDate, start.Mission, start.Shuttle, name.ShipLiveNameFrom, name.NameFrom } ); foreach (var s in task3) { Console.WriteLine($"{s.No,3} {s.LaunchDate:dd.MM.yyyy} {s.Mission,-15} {s.Shuttle,-15} {s.ShipLiveNameFrom,-20}"); } #endregion #region Task4 - join-join Console.WriteLine("\nTask 4: Complete Shuttle Information (Double Join)"); Console.WriteLine("==================================================="); var task4 = shuttleStart.Join( shuttleName, start => start.Shuttle, name => name.ShuttleName, (start, name) => new { start, name } ).Join( shuttle, temp => temp.start.Shuttle, sh => sh.Name, (temp, sh) => new { temp.start.No, temp.start.LaunchDate, temp.start.Mission, temp.start.Shuttle, sh.OVNo, temp.name.NameFrom } ); foreach (var s in task4.Take(10)) { Console.WriteLine($"{s.No,3} {s.LaunchDate:dd.MM.yyyy} {s.Mission,-15} {s.Shuttle,-15} {s.OVNo,-10}"); } #endregion #region Task5 - join-group Console.WriteLine("\nTask 5: Shuttle Starts Grouped by Shuttle (Join-Group)"); Console.WriteLine("======================================================="); var task5 = shuttleStart .Join( shuttle, start => start.Shuttle, sh => sh.Name, (start, sh) => new { start, sh } ).GroupBy( x => new { x.start.Shuttle, x.sh.OVNo } ).Select( g => new { g.Key.Shuttle, g.Key.OVNo, Count = g.Count(), FirstLaunch = g.Min(s => s.start.LaunchDate), LastLaunch = g.Max(s => s.start.LaunchDate) } ); foreach (var s in task5) { Console.WriteLine($"{s.Shuttle,-15} {s.OVNo,-10} Missions: {s.Count,3} First: {s.FirstLaunch:dd.MM.yyyy} Last: {s.LastLaunch:dd.MM.yyyy}"); } #endregion