2011-09-20 3 views
1

Envisagez 3 entités. Group, Box et Message. Chaque groupe contient des boîtes et chaque boîte contient des messages.Sélection/Filtrage de collections imbriquées dans L2E

ce qui est la plus élégante façon de récupérer des messages à l'intérieur d'un groupe avec des conditions personnalisées dans Linq Pour Entitis en utilisant des expressions lambda? Par exemple, je veux sélectionner les messages soumis hier dans un certain groupe (ainsi, le resultr devrait être IEnumerable<Message>). Comment puis-je faire le moins d'appels à db et filtrer les résultats dans ma requête db?

Mise à jour
J'ai une liste noire pour ne pas afficher mon code. C'est parce que je n'en ai pas. La question est assez simple. pas un devoir. Je ne m'attendais pas à ça!

Répondre

1

En supposant que vous avez des clés étrangères dans votre base de données et les propriétés de navigation dans votre modèle à cause de cela, le code suivant devrait faire l'affaire:

var messages = context.Groups 
         .SelectMany(g => g.Boxes 
             .SelectMany(b => b.Messages 
                  .Where(m => m.Date == 
                     yourDate) 
                ) 
           ); 
1

Vous avez juste besoin de mettre requête de jointure entre les

from g in group 
join b in boxes on g.id = b.groupid 
join m in messages on b.id = m.boxid 
where m.Date = your date 
select m 
+0

Bien que je l'ai dit je suis intéressé à le voir en utilisant des expressions lambda, mais merci pour la solution. – Kamyar

+1

@Kamyar - si vous voulez aller pour cela que d'essayer la solution Daniel parce que selectmany faire senese –

Questions connexes