LINQ の LEFT OUTER JOIN 質問する

LINQ の LEFT OUTER JOIN 質問する

C# LINQ to Objectsで句を使用せずに左外部結合を実行する方法を教えてくださいjoin-on-equals-into。句を使用してそれを実行する方法はありますかwhere? 正しい問題: 内部結合は簡単で、次のような解決策があります。

List<JoinPair> innerFinal = (from l in lefts from r in rights where l.Key == r.Key
                             select new JoinPair { LeftId = l.Id, RightId = r.Id})

しかし、左外部結合には解決策が必要です。私のはこんな感じですが、うまくいきません

List< JoinPair> leftFinal = (from l in lefts from r in rights
                             select new JoinPair { 
                                            LeftId = l.Id, 
                                            RightId = ((l.Key==r.Key) ? r.Id : 0
                                        })

JoinPairクラスはどこですか:

public class JoinPair { long leftId; long rightId; }

ベストアンサー1

前述の通り「左外部結合を実行する」:

var q =
    from c in categories
    join pt in products on c.Category equals pt.Category into ps_jointable
    from p in ps_jointable.DefaultIfEmpty()
    select new { Category = c, ProductName = p == null ? "(No products)" : p.ProductName };

おすすめ記事