Verknüpfungsvorgänge

Ein Join zweier Datenquellen ist die Zuordnung von Objekten einer Datenquelle zu Objekten, die ein gemeinsames Attribut in einer anderen Datenquelle haben.

Das Verknüpfen ist ein wichtiger Vorgang beim Abfragen von Datenquellen, deren Verbindung zueinander nicht direkt nachvollziehbar ist. In der objektorientierten Programmierung wäre dies beispielsweise ein Zusammenhang zwischen Objekten, der nicht erstellt wurde, wie zum Beispiel die Abwärtsrichtung einer unidirektionalen Beziehung. Ein Beispiel einer unidirektionalen Beziehung wäre eine Customer-Klasse (Kunde), die eine Eigenschaft des Typs City (Stadt) besitzt, während die City-Klasse über keine Eigenschaft verfügt, die eine Auflistung von Customer-Objekten darstellt. Wenn Sie eine Liste von City-Objekten haben und alle Kunden in jeder Stadt finden möchten, könnten Sie dazu einen Joinvorgang verwenden.

Im LINQ-Framework werden folgende Join-Methoden bereitgestellt: Join und GroupJoin. Diese Methoden erstellen Gleichheitsverknüpfungen bzw. Verknüpfungen, bei denen zwei Datenquellen auf Grundlage der Gleichheit ihrer Schlüssel übereinstimmen. (Im Vergleich dazu unterstützt Transact-SQL andere Joinoperatoren als den Gleichheitsoperator, z. B. den 'Weniger als'-Operator.) In der Terminologie für relationale Datenbanken implementiert Join eine innere Verknüpfung, d. h. eine Verknüpfung, in der nur jene Objekte, die eine Übereinstimmung in einem anderen Dataset aufweisen, zurückgegeben werden. Die GroupJoin-Methode findet in der Terminologie für relationale Datenbanken keine direkte Entsprechung, aber sie implementiert ein Superset von inneren Verknüpfungen und linken äußeren Verknüpfungen. Eine linke äußere Verknüpfung ist eine Verknüpfung, die jedes Element der ersten (linken) Datenquelle zurückgibt, selbst wenn keine zugeordneten Elemente in der anderen Datenquelle vorhanden sind.

Die folgende Abbildung zeigt eine grundlegende Übersicht zweier Mengen und der Elemente innerhalb dieser Mengen, die entweder in einem inneren Join oder einem linken äußeren Join inbegriffen sind.

Zwei überlappende Kreise innen/außen

Methoden

Methodenname

Beschreibung

C#-Abfrageausdruckssyntax

Visual Basic-Abfrageausdruckssyntax

Weitere Informationen

Join

Verknüpft zwei Sequenzen auf Grundlage von Schlüsselauswahlfunktionen und extrahiert Paare von Werten.

join … in … on … equals …

From x In …, y In … Where x.a = y.a

- oder -

Join … [As …]In … On …

Enumerable.Join

Queryable.Join

GroupJoin

Verknüpft zwei Sequenzen auf Grundlage von Schlüsselauswahlfunktionen und gruppiert die resultierenden Entsprechungen für jedes Element.

join … in … on … equals … into …

Group Join … In … On …

Enumerable.GroupJoin

Queryable.GroupJoin

Siehe auch

Aufgaben

Vorgehensweise: Formulieren von Joins und produktübergreifenden Abfragen (LINQ to SQL)

Gewusst wie: Verknüpfen mithilfe eines zusammengesetzten Schlüssels (C#-Programmierhandbuch)

Gewusst wie: Verknüpfen des Inhalts unterschiedlicher Dateien (LINQ)

Gewusst wie: Sortieren der Ergebnisse einer Join-Klausel (C#-Programmierhandbuch)

Gewusst wie: Ausführen von benutzerdefinierten Verknüpfungsoperationen (C#-Programmierhandbuch)

Gewusst wie: Ausführen von Gruppenverknüpfungen (C#-Programmierhandbuch)

Gewusst wie: Ausführen innerer Verknüpfungen (C#-Programmierhandbuch)

Gewusst wie: Ausführen linker äußerer Verknüpfungen (C#-Programmierhandbuch)

Gewusst wie: Füllen von Objektauflistungen aus mehreren Quellen (LINQ)

Referenz

System.Linq

Anonyme Typen (C#-Programmierhandbuch)

join-Klausel (C#-Referenz)

Join-Klausel (Visual Basic)

Konzepte

Übersicht über Standardabfrageoperatoren

Anonyme Typen (Visual Basic)

Verknüpfungstypen