LINQ-Mehrfeldverbindung: Mehrere Entitäten effizient verknüpfen
In LINQ wird zum Verbinden mehrerer Entitäten normalerweise das Schlüsselwort join
verwendet. Obwohl Einzelfeld-Joins häufiger vorkommen, können Mehrfeld-Joins durch einfache Syntaxanpassungen problemlos implementiert werden.
Mehrfeld-Join-Syntax
Die Syntax zum Zusammenführen mehrerer Felder in einer einzelnen LINQ-Abfrage lautet wie folgt:
<code class="language-csharp">from x in entity join y in entity2 on new { x.field1, x.field2 } equals new { y.field1, y.field2 }</code>
new
erstellt einen anonymen Typ, der die Felder von zwei Entitäten kombiniert, die für den Join verwendet werden. Der anonyme Typ auf der linken Seite des Gleichheitszeichens stellt die Verbindungsbedingung der ersten Entität dar, und die rechte Seite stellt die Verbindungsbedingung der zweiten Entität dar.
Beispiel
Hier ist ein Beispiel:
<code class="language-csharp">var result = from x in entity join y in entity2 on new { x.field1, x.field2 } equals new { y.field1, y.field2 }</code>
Diese Abfrage verknüpft field1
und field2
basierend auf den Feldern entity
und entity2
und gibt eine kombinierte Sequenz mit Datensätzen zurück, die den angegebenen Feldern in beiden Entitäten entsprechen.
Andere Hinweise
Es ist zu beachten, dass die Datentypen der Verbindungsfelder kompatibel sein müssen. Darüber hinaus führt das Schlüsselwort join
einen Inner Join durch, was bedeutet, dass nur Datensätze mit übereinstimmenden Feldwerten zurückgegeben werden.
Wenn Sie einen Left Outer Join durchführen müssen, können Sie den Operator GroupJoin
verwenden. Zum Beispiel:
<code class="language-csharp">var result = from x in entity join y in entity2 on new { x.field1, x.field2 } equals new { y.field1, y.field2 } into yGroup from y in yGroup.DefaultIfEmpty()</code>
Diese Abfrage führt einen linken äußeren Join durch und stellt so sicher, dass alle Datensätze in der Tabelle entity
zurückgegeben werden, auch wenn es keine passenden Datensätze in der Tabelle entity2
gibt.
Das obige ist der detaillierte Inhalt vonWie führt man Mehrfeldverknüpfungen in einer einzelnen LINQ-Abfrage durch?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!