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});
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 });
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 };
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!