131 lines
3.6 KiB
C#
131 lines
3.6 KiB
C#
/*--------------------------------------------------------------
|
|
* 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<SpaceShuttle.SpaceShuttle>()
|
|
{
|
|
DateFormat = "dd.MM.yyyy",
|
|
TimeFormat = "H:m"
|
|
}.Read(fileNameShuttle);
|
|
|
|
var shuttleName = new CsvImport<SpaceShuttle.SpaceShuttleName>().Read(fileNameShuttleName);
|
|
|
|
var shuttleStart = new CsvImport<SpaceShuttle.SpaceShuttleStart>()
|
|
{
|
|
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
|