Verknüpfungsvorgänge (C#)Join Operations (C#)

Eine Verknüpfung zweier Datenquellen entspricht der Zuordnung von Objekten einer Datenquelle zu den Objekten einer anderen Datenquelle, die ein Attribut gemeinsam haben.A join of two data sources is the association of objects in one data source with objects that share a common attribute in another data source.

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.Joining is an important operation in queries that target data sources whose relationships to each other cannot be followed directly. Bei der objektorientierten Programmierung könnte dies eine nicht modellierte Korrelation zwischen Objekten bedeuten, z. B. die entgegengesetzte Richtung einer unidirektionalen Beziehung.In object-oriented programming, this could mean a correlation between objects that is not modeled, such as the backwards direction of a one-way relationship. 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.An example of a one-way relationship is a Customer class that has a property of type City, but the City class does not have a property that is a collection of Customer objects. 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.If you have a list of City objects and you want to find all the customers in each city, you could use a join operation to find them.

Die im LINQ-Framework bereitgestellten Join-Methoden sind Join und GroupJoin.The join methods provided in the LINQ framework are Join and GroupJoin. Diese Methoden führen Gleichheitsverknüpfungen oder Verknüpfungen durch, bei denen zwei Datenquellen auf Basis der Gleichheit ihrer Schlüssel verglichen werden.These methods perform equijoins, or joins that match two data sources based on equality of their keys. (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 Join 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.(For comparison, Transact-SQL supports join operators other than 'equals', for example the 'less than' operator.) In relational database terms, Join implements an inner join, a type of join in which only those objects that have a match in the other data set are returned. Für die GroupJoin-Methode hat bei relationalen Datenbanken kein direktes Äquivalent. Sie implementieren eine übergeordnete Menge innerer und linker äußerer Joins.The GroupJoin method has no direct equivalent in relational database terms, but it implements a superset of inner joins and left outer 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.A left outer join is a join that returns each element of the first (left) data source, even if it has no correlated elements in the other data source.

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.The following illustration shows a conceptual view of two sets and the elements within those sets that are included in either an inner join or a left outer join.

Zwei überlappende Kreise innen/außen.Two overlapping circles showing inner/outer.

MethodenMethods

MethodennameMethod Name descriptionDescription C#-AbfrageausdruckssyntaxC# Query Expression Syntax Weitere InformationenMore Information
JoinJoin Verknüpft zwei Sequenzen auf Basis von Schlüsselauswahlfunktionen und extrahiert Wertepaare.Joins two sequences based on key selector functions and extracts pairs of values. join … in … on … equals … Enumerable.Join

Queryable.Join
GroupJoinGroupJoin Verknüpft zwei Sequenzen auf Basis von Schlüsselauswahlfunktionen und gruppiert die sich ergebenden Übereinstimmungen für die einzelnen Elemente.Joins two sequences based on key selector functions and groups the resulting matches for each element. join … in … on … equals … into … Enumerable.GroupJoin

Queryable.GroupJoin

Siehe auchSee Also

System.Linq
Standard Query Operators Overview (C#) (Übersicht der Standardabfrageoperatoren (C#))Standard Query Operators Overview (C#)
Anonyme TypenAnonymous Types
Formulieren von Joins und produktübergreifenden AbfragenFormulate Joins and Cross-Product Queries
join-Klauseljoin clause
Gewusst wie: Verknüpfen mithilfe eines zusammengesetzten SchlüsselsHow to: Join by Using Composite Keys
Vorgehensweise: Verknüpfen des Inhalts unterschiedlicher Dateien (LINQ) (C#)How to: Join Content from Dissimilar Files (LINQ) (C#)
Gewusst wie: Sortieren der Ergebnisse einer Join-KlauselHow to: Order the Results of a Join Clause
Gewusst wie: Ausführen von benutzerdefinierten VerknüpfungsoperationenHow to: Perform Custom Join Operations
Gewusst wie: Ausführen von GruppenverknüpfungenHow to: Perform Grouped Joins
Gewusst wie: Ausführen innerer VerknüpfungenHow to: Perform Inner Joins
Gewusst wie: Ausführen linker äußerer VerknüpfungenHow to: Perform Left Outer Joins
Vorgehensweise: Füllen von Objektauflistungen aus mehreren Quellen (LINQ) (C#)How to: Populate Object Collections from Multiple Sources (LINQ) (C#)