Where ·
Select ·
OrderBy ·
GroupBy ·
Join ·
Aggregate
Language Integrated Query (LINQ) ist ein leistungsstarkes Feature von C# für die Abfrage und Manipulation von Daten in Collections, Datenbanken und XML – mit einer einheitlichen, deklarativen Syntax.
Where filtert eine Sequenz basierend auf einer Bedingung. OfType filtert nach einem bestimmten Typ, Distinct entfernt Duplikate.
| Operator | Beschreibung | Rückgabetyp |
|---|---|---|
| Where(predicate) | Filtert nach Bedingung | IEnumerable<T> |
| OfType<T>() | Filtert nach Typ | IEnumerable<T> |
| Distinct() | Entfernt Duplikate | IEnumerable<T> |
| DistinctBy(key) | Entfernt Duplikate nach Schlüssel | IEnumerable<T> |
ToList() oder foreach).
Select transformiert jedes Element einer Sequenz in ein neues Element. SelectMany flacht verschachtelte Sequenzen ab (eine Ebene).
Select ist das Äquivalent zu map() in anderen Sprachen. Es erzeugt eine neue Sequenz mit transformierten Elementen.
OrderBy sortiert aufsteigend, OrderByDescending absteigend. ThenBy ermöglicht sekundäre Sortierkriterien, Reverse kehrt die Reihenfolge um.
GroupBy gruppiert Elemente nach einem Schlüssel. ToLookup erstellt eine ILookup-Struktur für schnellen Zugriff auf die Gruppen.
GroupBy ist lazy – die Gruppierung erfolgt erst beim Iterieren. ToLookup wird sofort ausgewertet und ist für wiederholte Zugriffe effizienter.
Join verbindet zwei Sequenzen basierend auf Schlüsseln (Inner Join). GroupJoin erzeugt eine hierarchische Verknüpfung (Left Join). Zip kombiniert zwei Sequenzen paarweise.
Join wird zu INNER JOIN, GroupJoin zu LEFT JOIN.
Aggregationsoperatoren berechnen einen einzelnen Wert aus einer Sequenz – Summe, Durchschnitt, Minimum, Maximum, Anzahl oder benutzerdefinierte Aggregate.
Any() und All() sind effizienter als Count() > 0, da sie frühzeitig abbrechen. Verwenden Sie FirstOrDefault() für den ersten Treffer.
Where
Select
OrderBy
GroupBy
Join
Sum
list.Where(x => x > 5).Select(x => x * 2).OrderBy(x => x).ToList()