Получать результаты из нескольких таблиц после группировки с использованием Linq-to-SQL - PullRequest
1 голос
/ 15 февраля 2012

Я думаю, что ответ должен быть легким, но я просто изо всех сил:

Хотелось бы иметь данные из 2 таблиц в запросе LINQ, аналогичном:

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}

Проблема заключается в том, что он не может найти e.CalendarDay в предложении select.

Я также пробовал что-то вроде: CalendarDay= e.Max(e=>e.CalendarDay), но e не в текущем контексте.

Как добавить данные из таблицы 'e' в предложение select?

Ответы [ 2 ]

1 голос
/ 15 февраля 2012

Если я правильно вас понял, это то, что вы ищете:

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 голосов
/ 15 февраля 2012

Если вы хотите e.CalendarDay в своем выборе, то вы обычно включаете его в группу, как в

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