считать + группировать по + где - PullRequest
3 голосов
/ 12 июля 2010

Я использую Entity Framework 4 и у меня проблемы с запросом.

У меня есть два объекта:

Инструкция Компонент

Между этими объектами существует отношение многие ко многим. Фургон с инструкциями указывает на один или несколько компонентов. На Компонент могут ссылаться несколько Инструкций.

Я пытаюсь узнать, сколько «завершено» (status = 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() };

Но его запрос не возвращает правильное количество. Я не знаю, как считать количество инструкций.

1 Ответ

5 голосов
/ 12 июля 2010

Как насчет этого?

var query = Components.Select(c => new 
            { 
                c.Id, 
                Count = c.Instructions.Count(i => i.Status == 6)
            });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...