2017-02-28 4 views
0

Ich habe eine LINQ-Abfrage und ich möchte die NULL-Werte nach dem Ausführen einer linken Verknüpfung behandeln.Lambda Left Join

Ich habe den Code unten:

var leftjoinlist = listA.GroupJoin(
     listB, 
     a => a.Code, 
     b => b.Code, 
     (a, g) => g 
    .SelectMany(new { Parent = a, Child = b }) 
    .DefaultIfEmpty(new { Parent = a, Child = a })) 
    .SelectMany(g => g).ToList(); 

Wenn Kind null ist, ich will stattdessen die Eltern zuweisen. Ich bekomme jedoch einen Konvertierungsfehler während der Zuweisung. Gibt es eine Möglichkeit, dies zu tun?

Antwort

0

Dies ist die korrekte Syntax eine äußere linke zu haben kommen in Ihrem Fall:

listA 
    .GroupJoin(listB, a => a.Code, b => b.Code, (a, g) => new {Parent = a, Childs = g}) 
    .SelectMany(arg => arg.Childs.DefaultIfEmpty(), 
        (arg1, c) => new {arg1.Parent, Child = c ?? arg1.Parent}) 
    .ToList();