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 };