IoT-Linq/README.md
Jonas Hinterdorfer d38f26291f added proj
2026-01-15 14:41:25 +01:00

78 lines
2.1 KiB
Markdown

"# 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
```
"