Heim >Backend-Entwicklung >C++ >Wie führe ich einen linken äußeren Join in Linq aus, ohne Join-on-Equals-Into-Klauseln zu verwenden?

Wie führe ich einen linken äußeren Join in Linq aus, ohne Join-on-Equals-Into-Klauseln zu verwenden?

DDD
DDDOriginal
2025-02-02 14:26:10934Durchsuche

How to Perform a Left Outer Join in LINQ Without Using Join-On-Equals-Into Clauses?

C# Linq linker Außenjoin: Ein alternativer Ansatz

Dieser Artikel zeigt, wie ein linker Außenjoin in LINQ an Objekte durchgeführt wird, ohne die herkömmliche join-on-equals-into -Klausel zu verwenden. Wir nutzen die Operatoren from und join in Verbindung mit DefaultIfEmpty() für eine kurze und effiziente Lösung.

Hier ist die alternative Syntax:

<code class="language-csharp">var q =
    from l in lefts
    join r in rights on l.Key equals r.Key into ps_jointable
    from p in ps_jointable.DefaultIfEmpty()
    select new JoinPair { LeftId = l.Id, RightId = p?.Id ?? 0 };</code>

Diese Linq -Abfrage führt einen linken äußeren Join auf den Kollektionen lefts und rights aus, wodurch eine neue Sammlung von JoinPair Objekten generiert wird. Für jeden Artikel in lefts versucht es, ein passendes Element in rights basierend auf der Eigenschaft Key zu finden. Wenn ein Match vorhanden ist, hält RightId in JoinPair das Id des übereinstimmenden rights -Olement. Wenn keine Übereinstimmung gefunden wird, wird RightId mit dem Null-Conditional-Operator (?.) und dem Null-Koalescing-Operator (??) standardmäßig 0 ausgewiesen.

.

DefaultIfEmpty() Die rights -Methode ist wesentlich. Es stellt sicher, dass ein Ergebnis produziert wird, auch wenn in der DefaultIfEmpty() -Kollektion keine Übereinstimmungen gefunden werden. In Abwesenheit eines Matchs gibt join-on-equals-into in diesem Fall einen Standardwert zurück (in diesem Fall Null), der dann von den Null-Conditional- und Null-Koalescing-Operatoren anmutig behandelt wird. Dieser Ansatz bietet eine lesbarere und potenziell leistungsfähigere Alternative zur Standard

-Syntax für linke Außenverbindungen in Linq.

Das obige ist der detaillierte Inhalt vonWie führe ich einen linken äußeren Join in Linq aus, ohne Join-on-Equals-Into-Klauseln zu verwenden?. 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