2012-02-15 50 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}