3 つのテーブルで左外部結合を実行しようとしています。1つの変数でそれを行う方法があることは知っていますが、それを理解することができませんでした. 代わりに、2 つの別個の左外部結合を実行してから、それらに対して左外部結合を実行しました。そのための私のコードは次のとおりです。
var outerJoin1 =
(from h in resultHours
join u in results on new {h.PhysicalUnitId, h.MonthNum} equals new {u.PhysicalUnitId, u.MonthNum} into outer
from grouping in outer.DefaultIfEmpty()
select new {timeKey = h, Key = grouping});
var outerJoin2 =
(from h in resultHours
join s in serviceHrsResults on new {h.PhysicalUnitId, h.MonthNum} equals new {s.PhysicalUnitId, s.MonthNum} into outer2
from grouping in outer2.DefaultIfEmpty()
select new {timeKey = h, Key = grouping});
var outerJoin =
(from a in outerJoin1
join b in outerJoin2 on new {a.timeKey.PlantId, a.timeKey.MonthNum} equals new {b.timeKey.PlantId, b.timeKey.MonthNum} into outer
from grouping in outer.DefaultIfEmpty()
select new{timeKey = a, Key = grouping}).Distinct();
上記を1つの変数にまとめてみましたが、うまくいきません。これが私が試したことです:
var outerjoin =
from h in resultHours
join u in results on new {h.PhysicalUnitId, h.MonthNum} equals new {u.PhysicalUnitId, u.MonthNum} into outer
from grouping in outer.DefaultIfEmpty()
from hr in resultHours
join s in serviceHrsResults on new {hr.PhysicalUnitId, hr.MonthNum} equals new {s.PhysicalUnitId, s.MonthNum} into outer2
from grouping in outer2.DefaultIfEmpty()
select new {timeKey = h && timeKey = hr, Key = grouping};
これに関する問題は、2 つのグループ化の競合です。選択の直前に単一のグループ化が必要だと確信していますが、「グループ化」を使用してouter.DefaultIfEmpty()とouter2.DefaultIfEmpty()の両方を含める方法を理解できません。
誰かが私を啓発してくれれば幸いです。