2017-02-28 11 views
0

私はLINQクエリを持っており、左結合を実行した後にNULL値を処理したいと考えています。子供がnullの場合Lambda Left Join

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