2012-02-15 49 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

謝謝,但它似乎只是改變了連接的語法。雖然您的連接的語法不起作用。 如果我刪除了group子句,那麼它就可以工作,但是添加該組會導致問題。 – 2012-02-15 08:43:42

+0

抱歉,請延遲...請檢查更新後的答案。 – NaveenBhat 2012-02-15 09:53:10

+0

不錯的工作。它工作(與我的舊連接,但你的選擇和加入),完成 – 2012-02-15 10:21:57

0

如果您在選擇要e.CalendarDay,那麼你通常會包括它在一組,在

group f by new { f.FaultID , e.CalendarDay } into groupF 
select new {groupF.Key.FaultID, groupF.Key.CalendarDay}