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
Freigeben: 2025-02-02 14:41:10
Original
1039 Leute haben es durchsucht

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:
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});
Nach dem Login kopieren

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:

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
                                        });
Nach dem Login kopieren

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.

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 };
Nach dem Login kopieren
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!

Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage