2017-02-28 93 views
0

我有一个LINQ查询,我想在处理左连接后处理NULL值。Lambda左连接

我有下面的代码:

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(); 

如果孩子是空的,我要分配父来代替。但是,我在分配过程中遇到转换错误。有没有办法做到这一点?

回答

0

这是正确的语法有一个左外连接你的情况:

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();