У меня есть две таблицы в моей базе данных SQL Server, organisation
и event
.Как выбрать организацию и следующее мероприятие?
Одна организация имеет несколько событий. Каждое событие имеет свой собственный date
.
Я пытаюсь получить следующую/предстоящую дату события с ее организацией name
. Следующее событие - это то, где дата событий равна сегодня или дням.
Я пытался что-то вроде этого (который, очевидно, не работает):
var queryResults = (from o in context.Organisations
join e in context.Events on o.Id equals e.Organisation.Id
where e.PremiereDateTime >= DateTime.UtcNow
orderby e.PremiereDateTime ascending
select o, e);
Я пытался сделать group by
, но мне не удалось. Я работал с простым T-SQL-запросом, но хочу сделать это с помощью Entity Framework.
UPDATE
Я забыл упомянуть, что я пытаюсь выбрать название организации только один раз с датой следующего события. Каждая организация должна иметь только следующее предстоящее мероприятие.
ОБНОВЛЕНИЕ # 2
Желаемый выход:
organisation1
следующее событие:date3
organisation2
следующее событие:date4
ОБНОВЛЕНИЕ # 3
Это то, что я прямо сейчас:
var result = from org in context.Organisations
join sorg in context.SubOrganisations on org.Id equals sorg.Organisation.Id into sorg2
from s in sorg2.DefaultIfEmpty()
join ev in context.Events on s.Id equals ev.SubOrganisation.Id into ev2
from e in ev2.DefaultIfEmpty()
select new
{
Name = org.Name,
UpcomingEvent = (from ee in s.Events
where ee.PremiereDateTime >= DateTime.UtcNow
orderby ee.PremiereDateTime ascending
select ee).FirstOrDefault()
};
Вам нужно будет выбрать анонимный тип, если вы хотите, как данные организации и событий в том же объекте –
У вас есть навигационный свойство '.Events' на' Organisation'? –
@YacoubMassad Да, я знаю. –