Моего реального примера слишком неясный, чтобы объяснить, но это довольно хорошее приближение того, что я пытаюсь сделать ...Нужна помощь с LINQ запросом, который соединяет две таблицы, содержащую периодические события
Month
стола имеет столбцы: Id
, Name
Holiday
таблица имеет столбцы: Id
, MonthId
, DayOfMonth
, Name
Appointment
таблица имеет столбцы: Id
, MonthId
, DayOfMonth
, Description
Как получить список уникальных событий (праздники и назначений) заказанных месяц и день месяца?
Примеры результатов:
Month Holiday Day Appointment Day
----------------------------------------
Nov Fly to NYC 25
Nov T-Giving 26
Nov Fly home 29
Dec Xmas 25
Итак, я хочу отдельные столбцы для праздников и событий, но я хочу, чтобы все они были уникальными и перечислены в порядке месяц-день.
Вот что я до сих пор (см инлайн комментарии):
var events =
from
m in GetMonths()
join
h in GetHolidays()
on m.Id equals h.MonthId
join
a in GetAppointments()
on m.Id equals a.MonthId
where
//something that narrows all combinations of events to only unique events
orderby
m.Id,
// something that interleaves h.DayOfMonth with m.DayOfMonth
select
new
{
Month = m.Name,
Holiday = h.Name,
HolidayDay = h.DayOfMonth,
Appointment = a.Description,
AppointmentDay = a.DayOfMonth
};
Можете ли вы определить, что вы подразумеваете под «уникальным»? У вас одно и то же событие в таблице назначения несколько раз? Вам нужна только одна встреча/отпуск в день? – ristonj
Уникальным я имею в виду одно событие (праздник * или * назначение) в строке, и никакое событие никогда не повторяется. – devuxer