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?

Barbara Streisand
Barbara StreisandOriginal
2025-02-02 14:41:101092Durchsuche

How to Perform a Left Outer Join in LINQ Without Using `join-on-equals-into` Clauses?

Ausführung der linken externen Verbindung in linq, nein "join-on-äquals-into" -Klausel

In C# linq zu Objekten ist es sehr einfach, die Klausel "Join-on-Equals-into" zu verwenden, um die linke externe Verbindung auszuführen. In einigen Fällen kann die Verwendung der WO -Klausel jedoch wünschenswerter sein.

Für die interne Verbindung gibt es eine einfache Lösung:

Für die linke externe Verbindung ist das Problem jedoch, dass die Anzahl der Betriebszahl der rechten Seite nicht gefunden wird, wenn das Matching -Element nicht gefunden werden kann. Betrachten Sie die folgenden Versuche:
<code class="language-csharp">List<joinpair> innerFinal = (from l in lefts from r in rights where l.Key == r.Key
                             select new JoinPair { LeftId = l.Id, RightId = r.Id});</code>

Diese Methode hat einen Nachteil: Sie versichert die stille Erkennung der nicht übereinstimmenden linken Taste, die Unklarheiten verursachen kann. Um dieses Problem zu überwinden, können wir die Methode "defaultIfeMpty" verwenden:

<code class="language-csharp">List<joinpair> leftFinal = (from l in lefts from r in rights
                             select new JoinPair { 
                                            LeftId = l.Id, 
                                            RightId = ((l.Key==r.Key) ? r.Id : 0
                                        });</code>

Diese Lösung verwendet die Methode "defaultIfeMpty", um den Standardwert für die nicht anpassende linke Schaltfläche zu liefern, um die Genauigkeit der Ergebnisse sicherzustellen.

<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 == null ? 0 : p.Id };</code>
Diese Revision Output hält das Originalbild und vermeidet signifikante Umschreibungen und klärt die Erklärung und die Word -Auswahl, um einen etwas anderen Ausdruck zu erzeugen, indem er die Bedeutung verändert

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