Sobes.tech
Junior

Kennst du LINQ?

sobes.tech KI

Antwort von AI

Ja, kenne ich.

LINQ (Language Integrated Query) ist eine Sammlung von Technologien, die die Abfragefunktionalität in die Programmiersprache C# integrieren. Es ermöglicht das Schreiben von Abfragen an verschiedene Datenquellen (Sammlungen, Datenbanken, XML usw.) direkt im C#-Code, unter Verwendung einer einheitlichen Syntax und eines Modells.

Hauptkomponenten und Merkmale von LINQ:

  • LINQ-Anbieter: Implementieren Schnittstellen und Klassen, die LINQ-Abfragen in spezifische Befehle für eine bestimmte Datenquelle übersetzen. Beispiele: LINQ to Objects, LINQ to SQL, LINQ to XML.
  • LINQ-Operatoren: Erweiterungen für IEnumerable<T> und IQueryable<T>, die Standardabfrageoperationen wie Filterung, Projektion, Sortierung, Gruppierung und Aggregation bereitstellen. Es gibt sie in zwei Formen:
    • Abfrage-Syntax (Query Syntax), die SQL ähnelt:
      // Beispiel für Abfrage-Syntax
      var query = from item in collection
                  where item.Property > 10
                  orderby item.AnotherProperty
                  select item.Result;
      
    • Methoden-Syntax (Method Syntax), die Erweiterungsmethoden verwendet:
      // Beispiel für Methoden-Syntax
      var query = collection.Where(item => item.Property > 10)
                            .OrderBy(item => item.AnotherProperty)
                            .Select(item => item.Result);
      
  • Verzögerte Ausführung (Deferred Execution): LINQ-Abfragen werden nicht sofort bei ihrer Definition ausgeführt. Die Ausführung erfolgt erst, wenn das Ergebnis der Abfrage tatsächlich benötigt wird (z.B. beim Durchlaufen mit foreach, Aufruf von ToList(), ToArray(), Count() usw.). Dies optimiert die Arbeit mit Daten.
  • Statische Typisierung: LINQ nutzt die Vorteile der statischen Typisierung von C#, bietet Überprüfungen zur Kompilierzeit und IntelliSense.
  • Kombinationsfähigkeit: Abfrageoperatoren können leicht kombiniert werden, um komplexe Abfragen zu erstellen.
  • Erweiterbarkeit: Es ist möglich, eigene LINQ-Anbieter und -Operatoren zu erstellen.

Häufig verwendete LINQ-Operatoren:

Kategorie Operatoren in Methodensyntax Beschreibung
Filterung Where, OfType Auswahl von Elementen anhand einer Bedingung oder des Typs.
Projektion Select, SelectMany Transformation von Elementen oder Entfaltung.
Sortierung OrderBy, OrderByDescending, ThenBy, ThenByDescending, Reverse Sortierung der Elemente.
Gruppierung GroupBy Gruppierung von Elementen nach Schlüssel.
Vereinigung Join, GroupJoin Vereinigung von Elementen aus verschiedenen Quellen.
Aggregation Count, LongCount, Sum, Average, Min, Max, Aggregate Berechnung aggregierter Werte.
Quantoren All, Any, Contains, SequenceEqual Überprüfung auf Vorhandensein oder Übereinstimmung von Elementen.
Elemente First, FirstOrDefault, Single, SingleOrDefault, ElementAt, ElementAtOrDefault, DefaultIfEmpty Einzelne Elemente erhalten.
Segmentierung Take, Skip, TakeWhile, SkipWhile Auswahl oder Überspringen von Elementen.
Konvertierung ToArray, ToList, ToDictionary, ToLookup, Cast, AsEnumerable, AsQueryable Umwandlung in andere Kollektionstypen.
Generierung Range, Repeat Erstellen von Sequenzen.
Mengen Distinct, Union, Intersect, Except Operationen auf Mengen.
Zip Zip Vereinigung von Elementen aus zwei Sequenzen.

LINQ vereinfacht und verbessert die Lesbarkeit des Codes für die Arbeit mit Daten in C#.