"# 10-Iot ## Lehrziele - LINQ to Object - Navigation Properties - Wiederholung: Projektion, Join, GroupBy ## Aufgabenstellung In einem IoT Projekt werden Messdaten gesammelt und in einer Datenbank abgespeichert. Von dieser Datenbank sind CSV Exportdateien vorhanden: ### Datenstruktur #### ActorType.csv Kategorisierung der Aktoren. - Id: Eindeutige ID - Name: Bezeichnung der Aktorkategorie #### Actor.csv Liste aller im System vorhandenen Aktoren. - Id: Eindeutige ID - Name: Bezeichnung des Aktors - FirstSeen: Zeitpunkt der ersten Registrierung - ActorTypeId: Beziehung zu den Aktoren-Kategorien #### MeasurementType.csv Liste aller Messwert-Kategorien. - Id: Eindeutige ID - Name: Bezeichnung (z.B. "Temperature") - Comment: Kommentar/Beschreibung #### Measurement.csv Liste aller (historischen) Messwerte. - Id: Eindeutige ID - Time: Zeitpunkt der Messung - ActorId: Zuordnung zu einem Aktor - MeasurementTypeId: Zuordnung zu einer Messwert-Kategorie - Value: Der gemessene Wert ## Implementierung ### Entitäten Das Projekt enthält zwei Arten von Entitäten: 1. **CsvEntities**: Einfache DTOs für den CSV-Import (ohne Beziehungen) 2. **Entities**: Domain-Entitäten mit Navigation Properties ### Navigation Properties Die Entities implementieren folgende Beziehungen: - `ActorType` → `Actors` (1:n) - `Actor` → `ActorType` (n:1) - `Actor` → `Measurements` (1:n) - `MeasurementType` → `Measurements` (1:n) - `Measurement` → `Actor` (n:1) - `Measurement` → `MeasurementType` (n:1) ### LINQ Queries Das Programm demonstriert verschiedene LINQ-Operationen: #### Report 1: Liste aller Aktoren mit Anzahl der Messungen - **Verwendete LINQ-Operationen**: Select, Projection, OrderBy #### Report 2: Liste aller Messwert-Typen mit Anzahl - **Verwendete LINQ-Operationen**: Select, Projection, OrderBy #### Report 3: Aktoren nach Messwert-Typen gruppiert mit Statistiken - **Verwendete LINQ-Operationen**: GroupBy, Select, Projection, Min, Max, Count, OrderBy - Zeigt für jede Kombination von Aktor und Messwert-Typ: - Anzahl der Messungen - Minimaler Wert - Maximaler Wert ## Ausführung ```bash dotnet run --project Iot/Iot.csproj ``` "