Wie führt man eine linke äußere Verknüpfung in C# LINQ to objects ohne Verwendung von join-on-equals-into
Klauseln? Gibt es eine Möglichkeit, dies zu tun mit where
Klausel? Richtiges Problem: Für inner join ist einfach und ich habe eine Lösung wie diese
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})
aber für die linke äußere Verbindung brauche ich eine Lösung. Meine ist etwas wie dieses, aber es funktioniert nicht
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
})
donde JoinPair
ist eine Klasse:
public class JoinPair { long leftId; long rightId; }
3 Stimmen
Können Sie ein Beispiel dafür geben, was Sie zu erreichen versuchen?
0 Stimmen
Normale linke äußere Verknüpfung ist so etwas wie dieses: var a = from b in bb join c in cc on b.bbbbb equals c.ccccc into dd from d in dd.DefaultIfEmpty() select b.sss; Meine Frage ist es eine Möglichkeit zu tun, dass ohne Verwendung von join-on-equals-into-Klauseln etwas wie dieses var a = from b in bb from c in cc where b.bbb == c.cccc ... und so weiter...
2 Stimmen
Sicher gibt es, aber Sie sollten ein Beispiel für Ihren Code posten, den Sie bereits haben, damit die Leute Ihnen eine bessere Antwort geben können
1 Stimmen
Ich suchte nach einem "Links ohne " JOIN (und ich habe es mit dem Begriff "OUTER" verwechselt). Diese Antwort entsprach eher dem, was ich wollte.
0 Stimmen
Ähnlicher Beitrag - Linq join iquery, wie man defaultifempty verwendet
0 Stimmen
Siehe auch Linq to Entities join vs. groupjoin .
0 Stimmen
Für Linq-to-Entities (nicht Objects), siehe diese Frage: stackoverflow.com/questions/19356439/