Linke Verbindung mit LINQ

8

Könnte mir jemand ein Beispiel dafür geben, wie man eine linke Join-Operation mit LINQ / Lambda-Ausdrücken durchführt?

    
Noldorin 11.05.2009, 15:27
quelle

5 Antworten

6

Die LINQ to SQL-Beispielseite auf MSDN gibt ein Beispiel für die Vorgehensweise Dies. Der Code sollte für LINQ zu Objects ziemlich identisch sein.

Der Schlüssel hier ist der Aufruf von DefaultIfEmpty .

%Vor%

Wenn Sie Hilfe bei der Konvertierung in C # benötigen, fragen Sie einfach.

    
Noldorin 11.05.2009 15:36
quelle
4

Hier ist ein Beispiel für einen linken Join in LINQ.

    
Reed Copsey 11.05.2009 15:37
quelle
0

Zum Beispiel:

%Vor%

Gibt Ihnen eine Liste von Rollen aus der asp.net-Mitgliedschaft mit Nullen, wo sie nicht mit dem angegebenen Benutzer (iduser key) übereinstimmt

    
Francisco 28.01.2010 18:33
quelle
0

Ich habe festgestellt, dass ich OuterCollection.SelectMany() mit InnerCollection.DefaultIfEmpty() kombinieren möchte. Sie können Folgendes in LINQPad mit dem Modus "C # -Anweisungen" ausführen.

%Vor%

Während ich damit experimentiere, habe ich manchmal festgestellt, dass Sie bei der Instanziierung des anonymen Typs die Null-Überprüfung von player weglassen können. Ich denke, dass dies der Fall ist, wenn LINQ-to-SQL in einer Datenbank verwendet wird (anstelle dieser Arrays hier, was LINQ-to-objects oder so etwas macht). Ich denke, dass die Null-Überprüfung in LINQ funktioniert -to-SQL, weil die Abfrage in eine SQL LEFT OUTER JOIN übersetzt wird, die direkt auf Null mit dem äußeren Element übergeht. (Beachten Sie, dass der Wert der Eigenschaft des anonymen Objekts Nullwerte enthalten darf. Wenn Sie also beispielsweise int sicher einschließen möchten, benötigen Sie beispielsweise: new { TeamId = (int?)player.TeamId } .

    
Carl G 18.10.2012 03:43
quelle
0

Nun, ich habe versucht, den berühmten linken Join zu reproduzieren, wo der b-Schlüssel null ist und das Ergebnis, das ich bekommen habe, diese Erweiterungsmethode ist (mit ein wenig Phantasie kann man sie so modifizieren, dass sie nur einen linken Join macht):

%Vor%     
Totodile 20.05.2015 21:24
quelle

Tags und Links