Heim >Backend-Entwicklung >C++ >Was ist der Unterschied zwischen den Join- und GroupJoin-Methoden von LINQ?

Was ist der Unterschied zwischen den Join- und GroupJoin-Methoden von LINQ?

Barbara Streisand
Barbara StreisandOriginal
2025-01-22 12:37:10228Durchsuche

What's the Difference Between LINQ's Join and GroupJoin Methods?

Vergleich von Join und GroupJoin in LINQ to Entities

GroupJoin verstehen

GroupJoin ist wie Join eine LINQ-Methode zum Kombinieren mehrerer Datenquellen. Allerdings erzeugt GroupJoin Ergebnisse mit einer anderen Struktur als Join.

Beitreten:

  • Führen Sie einen Inner Join durch und generieren Sie nur Zeilen, in denen es Übereinstimmungen in beiden verbundenen Tabellen gibt.
  • Ergebnis: Eine zusammengeführte Tabelle, die Spalten aus beiden Tabellen enthält.

Gruppenbeitritt:

  • Führen Sie einen Outer-Join durch, um Zeilen in der ersten Tabelle mit Zeilen in der zweiten Tabelle abzugleichen.
  • Ergebnis: Eine Sammlung von Gruppen, wobei jede Gruppe eine Zeile aus der ersten Tabelle und die entsprechende Zeile aus der zweiten Tabelle enthält (oder eine leere Liste, wenn keine Übereinstimmung vorhanden ist).

Grammatik

Abfragesyntax:

Beitreten:

<code>from p in Parent
join c in Child on p.Id equals c.Id
select new { p.Value, c.ChildValue }</code>

Gruppenbeitritt:

<code>from p in Parent
join c in Child on p.Id equals c.Id into g
select new { Parent = p, Children = g }</code>

Methodensyntax (seltener verwendet):

Beitreten:

<code>Parent.Join(Child, p => p.Id, c => c.Id, (p, c) => new { p.Value, c.ChildValue })</code>

Gruppenbeitritt:

<code>Parent.GroupJoin(Child, p => p.Id, c => c.Id, (p, c) => new { Parent = p, Children = c })</code>

Anwendungsfälle

1. Flache Außenverbindung erzeugen:

  • GroupJoin kann verwendet werden, um einen abgeflachten äußeren Join zu erstellen, der jede Zeile in der ersten Tabelle enthält, auch wenn es in der zweiten Tabelle keine passenden Zeilen gibt. Dies wird durch eine Abflachung der Gruppe erreicht:
<code>from p in Parent
join c in Child on p.Id equals c.Id into g
from c in g.DefaultIfEmpty()
select new { Parent = p.Value, Child = c?.ChildValue }</code>

2. Ordnung halten:

  • Join kann zum Filtern einer Liste unter Beibehaltung der Reihenfolge der Elemente verwendet werden. Durch die Verwendung einer externen Sequenz als erste Liste können Sie die Reihenfolge der Elemente aus der zweiten Liste beibehalten:
<code>from id in ids
join p in parents on id equals p.Id
select p</code>

Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen den Join- und GroupJoin-Methoden von LINQ?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn