Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Lambda左连接_C#_Linq_Lambda - Fatal编程技术网

C# Lambda左连接

C# Lambda左连接,c#,linq,lambda,C#,Linq,Lambda,我有一个LINQ查询,我想在执行左连接后处理空值 我的代码如下: 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

我有一个LINQ查询,我想在执行左连接后处理空值

我的代码如下:

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

如果child为null,我想改为分配父级。但是,我在分配过程中遇到一个转换错误。有什么方法可以做到这一点吗?

这是在您的案例中使用外部左连接的正确语法:

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