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
.
Wenn Sie Hilfe bei der Konvertierung in C # benötigen, fragen Sie einfach.
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.
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 }
.