Hello,
Situation un poil simplifiée.
J'ai 3 tables :
AnimalCategory
AnimalType
Animal
AnimalCategory a 1-n AnimalType
AnimalType a 0-n Animal
Ma requête doit me retourner
AnimalCategory ->AnimalTypes -> Animal (s'ils existent, avec une condition sur une autre table).
Donc, en sql, un left join sur la dernière table
La requête suivante semble fonctionner
Code :
- from ac in repository_.All<AnimalCategory>()
- where ac.AlphaCode == alphaCode
- select new
- {
- ac,
- AnimalTypes = from at in ac.AnimalTypes
- select new
- {
- Animals = from a in at.Animals
- where a.ProductionUnit.Id == puid
- select a
- }
- }).FirstOrDefault().ac;
|
Mais je me demande si on ne peut pas faire mieux, plus compact...
Des rois de linq ?