2012-02-15 4 views
1

使用してグループ化した後、複数のテーブルから結果を取得しますが、私はちょうど苦労しています:私は答えは簡単であるべきだと思うLINQのツーSQL

がに似てLINQクエリで2つのテーブルからデータを持っているしたいと思います:ここ

from f in Faults 
join af in AvailabilityFaults on f.FaultID equals af.FaultID 
join a in Availabilities on new { af.CalendarDay, af.CircuitNumber} 
      equals new { a.CalendarDay, a.CircuitNumber} 
join e in ExternalImportAvailabilities on new { a.CalendarDay, a.CircuitNumber } 
        equals new { e.CalendarDay, e.CircuitNumber } 
where a.CalendarDay.Value.Day != 1 
group f by f.FaultID into groupF 
select new {groupF, e.CalendarDay} 

問題は、select句でe.CalendarDayを見つけることができないということで来ています。

また、CalendarDay= e.Max(e=>e.CalendarDay)のようなものを試しましたが、eは現在のコンテキストにありません。

select句に 'e'テーブルのデータを追加するにはどうすればよいですか?

答えて

1

私が正しくあなたを理解している場合、これはあなたが探しているものです。

from f in Faults 
join af in AvailabilityFaults on f.FaultID equals af.FaultID 
join a in Availabilities on af.CalendarDay equals a.CalendarDay and af.CircuitNumber equals a.CircuitNumber 
join e in ExternalImportAvailabilities on a.CalendarDay equals e.CalendarDay and a.CircuitNumber equals e.CircuitNumber 
where a.CalendarDay.Value.Day != 1 
group new {f, e} by f.FaultID into groupFE 
select new {GroupF = groupFE.Select(gfe => gfe.f), CalendarDay = groupFE.Max(gfe => gfe.e.CalendarDay)} 
+0

ありがとうございますが、あなたは結合の構文を変更したようです。あなたの結合の構文はうまくいかない。 グループ句を削除すると機能しますが、グループを追加すると問題が発生します。 –

+0

遅れて申し訳ありません...更新された回答をご確認ください。 – NaveenBhat

+0

素敵な仕事です。それは(私の古い結合で、あなたの選択と参加)、うまくいった –

0

あなたの選択でe.CalendarDayをしたい場合は、あなたが正常に

のように、グループの中に含まれる
group f by new { f.FaultID , e.CalendarDay } into groupF 
select new {groupF.Key.FaultID, groupF.Key.CalendarDay} 
関連する問題