Safari Books Online is a digital library providing on-demand subscription access to thousands of learning resources.
Der Join-Operator verbindet die Elemente zweier Sequenzen in der Manier eines INNER JOIN, d. h. es werden nur solche Elemente zurückgeliefert, welche in beiden Sequenzen eine jeweilige Entsprechung haben. Dafür muss festgelegt werden, welche Eigenschaften über die gleichen Werte verfügen müssen, damit eine Zuordnung stattfindet.
Diese Gleichheit wird nicht wie bei Vergleichen üblich mit = bzw. == notiert. Vielmehr kommt das equals-Schlüsselwort zum Einsatz. Damit sind keine Joins möglich, die auf anderen booleschen Ausdrücke basieren – keine große Einschränkung, da diese in der Praxis recht selten vorkommen.
C#
Das Beispiel zeigt, wie Kunden mit ihrem Status »verbunden« werden. Die Verbindung ist über die Eigenschaften Status_ID (Kunden) und ID (StatusMenge) definiert. Das Endergebnis der Abfrage ist eine Liste aus anonymen Typen, die zum Schluss durchlaufen und ausgegeben werden.
// Objektkontext erstellen
TonisTortenTraumEntities TonisTortenTraumContext = new TonisTortenTraumEntities();
// Status für jeden Kunden ermitteln
var status = from k in TonisTortenTraumContext.Kunden
join s in TonisTortenTraumContext.StatusMenge
on k.Status_ID equals s.ID
select new { k.Name, Status = s.Text };
// Ausgabe
foreach (var s in status)
Debug.WriteLine(s);
Listing 4.29 Der Join-Operator (C#)
Die Ausgabe besteht aus allen Kunden und deren Statustext.
VB.NET
Das Beispiel zeigt, wie Kunden mit ihrem Status »verbunden« werden. Die Verbindung ist über die Eigenschaft Status_ID (Kunden) und ID (StatusMenge) definiert. Das Endergebnis der Abfrage ist eine Liste aus anonymen Typen, die zum Schluss durchlaufen und ausgegeben werden.
' Objektkontext erstellen
Dim TonisTortenTraumContext As New TonisTortenTraumEntities()
' Status für jeden Kunden ermitteln
Dim status = From k In TonisTortenTraumContext.Kunden
Join s In TonisTortenTraumContext.StatusMenge
On k.Status_ID Equals s.ID
Select New With {k.Name, .Status = s.Text}
' Ausgabe
For Each s In status
Debug.WriteLine(s)
Next
Listing 4.30 Der Join-Operator (VB.NET)
Die Ausgabe besteht aus allen Kunden und deren Statustext.