J'utilise Entity Framework 4 et j'ai des problèmes avec une requête.count + group by + où
J'ai deux objets:
Instruction Composant
Entre ces objets, il y a plusieurs à-plusieurs. Une instruction Van pointe vers un ou plusieurs composants. Et un composant peut être référencé par plusieurs instructions.
J'essaie de connaître le nombre d'instructions «terminées» (état = 6) pour chaque composant.
Dans ce SQL est facile:
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
Je vais avoir du mal à faire cela dans EF. C'est ce que j'ai essayé:
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() };
Mais sa requête ne retourne pas le nombre correct. Je ne sais pas comment compter le nombre d'instructions.
Renvoie-t-elle nombre = 1 pour chaque groupe? – Yakimych