Я использую Entity Framework 4 и имею проблемы с запросом.count + group by + where
У меня есть два объекта:
Инструкция Компонент
Между этими объектами есть многие-ко-многим. Диспетчер команд указывает на один или несколько Компонентов. А на компонент можно ссылаться несколькими инструкциями.
Я пытаюсь получить, сколько «завершено» (статус = 6). Инструкции для каждого компонента.
В SQL это легко:
select c.id, COUNT(*)
from Component c
inner join InstructionComponents ic on c.Id = ic.Component_Id
inner join Instructions i on i.Id = ic.Instruction_Id
where i.StatusValue = 6
group by c.id
У меня возникают проблемы, делая это в EF. Это то, что я пробовал:
var result =
from component in Copmponents
where component.Instructions.Any(s => s.Status == 6)
group component by component.Id
into componentGroup
select new { compId = onderdeelGroup.Key, count = componentGroup.Count() };
Но его запрос не возвращает правильный счет. Я не знаю, как подсчитать количество инструкций.
Он возвращает count = 1 для каждой группы? – Yakimych