Verknüpfungsvorgänge (C#)

Eine Verknüpfung zweier Datenquellen entspricht der Zuordnung von Objekten einer Datenquelle zu den Objekten einer anderen Datenquelle, die ein Attribut gemeinsam haben.

Die Verknüpfung stellt für Abfragen einen wichtigen Vorgang dar, die auf Datenquellen ausgerichtet sind, deren Beziehungen zueinander nicht direkt verfolgt werden können. Bei der objektorientierten Programmierung könnte dies eine nicht modellierte Korrelation zwischen Objekten bedeuten, z. B. die entgegengesetzte Richtung einer unidirektionalen Beziehung. Ein Beispiel einer unidirektionalen Beziehung ist die Klasse "Kunde" mit der Eigenschaft vom Typ "Ort", während die Klasse "Ort" keine Eigenschaft besitzt, die einer Auflistung von "Kunde"-Objekten entspricht. Wenn Sie eine Liste von "Ort"-Objekten besitzen und alle Kunden in den einzelnen Orten finden möchten, könnten Sie eine Join-Operation verwenden, um diese zu finden.

Die im LINQ-Framework bereitgestellten Join-Methoden sind <xref:System.Linq.Enumerable.Join%2A> und <xref:System.Linq.Enumerable.GroupJoin%2A>. Diese Methoden führen Gleichheitsverknüpfungen oder Verknüpfungen durch, bei denen zwei Datenquellen auf Basis der Gleichheit ihrer Schlüssel verglichen werden. (Zum Vergleich: Transact-SQL unterstützt auch andere Join-Operatoren als "ist gleich", z. B. den Operator "kleiner als".) Für relationale Datenbanken bedeutet dies, dass <xref:System.Linq.Enumerable.Join%2A> eine innere Verknüpfung implementiert, d.h. eine Art von Verknüpfung, bei der nur die Objekte zurückgegeben werden, die über eine Entsprechung im anderen Datensatz verfügen. Für die <xref:System.Linq.Enumerable.GroupJoin%2A>-Methode hat bei relationalen Datenbanken kein direktes Äquivalent. Sie implementieren eine übergeordnete Menge innerer und linker äußerer Joins. Ein Left Outer Join ist eine Verknüpfung, die jedes Element der ersten (linken) Datenquelle zurückgibt, selbst wenn die andere Datenquelle keine zugehörigen Elemente enthält.

Die folgende Abbildung zeigt eine Konzeptansicht zweier Sätze sowie der Elemente innerhalb dieser Sätze, die entweder in eine innere oder linke äußere Verknüpfung einbezogen sind.

Zwei überlappende Kreise innen/außen.

Methoden

Methodenname Beschreibung C#-Abfrageausdruckssyntax Weitere Informationen
Join Verknüpft zwei Sequenzen auf Basis von Schlüsselauswahlfunktionen und extrahiert Wertepaare. join … in … on … equals … <xref:System.Linq.Enumerable.Join%2A?displayProperty=nameWithType>

<xref:System.Linq.Queryable.Join%2A?displayProperty=nameWithType>
GroupJoin Verknüpft zwei Sequenzen auf Basis von Schlüsselauswahlfunktionen und gruppiert die sich ergebenden Übereinstimmungen für die einzelnen Elemente. join … in … on … equals … into … <xref:System.Linq.Enumerable.GroupJoin%2A?displayProperty=nameWithType>

<xref:System.Linq.Queryable.GroupJoin%2A?displayProperty=nameWithType>

Siehe auch

<xref:System.Linq>
Übersicht über Standardabfrageoperatoren (C#)
Anonyme Typen
Formulieren von Joins und produktübergreifenden Abfragen
Join-Klausel
Vorgehensweise: Verknüpfen mithilfe eines zusammengesetzten Schlüssels
Vorgehensweise: Verknüpfen des Inhalts unterschiedlicher Dateien (LINQ) (C#)
Vorgehensweise: Sortieren der Ergebnisse einer Join-Klausel
Vorgehensweise: Ausführen von benutzerdefinierten Verknüpfungsoperationen
Vorgehensweise: Ausführen von Gruppenverknüpfungen
Vorgehensweise: Ausführen innerer Verknüpfungen
Vorgehensweise: Ausführen von Left Outer Joins
Vorgehensweise: Füllen von Objektauflistungen aus mehreren Quellen (LINQ) (C#)