2009-02-26 4 views
1

Je voudrais voir un exemple qui tire le meilleur parti de l'opérateur ALL lors de l'utilisation d'une relation parent-enfant dans LINQ. Pouvez-vous me montrer un s'il vous plaît?Utilisation de l'opérateur All

+0

Re votre question (clients avec ordre) - non; ce serait Any - c'est-à-dire de cust dans ctx.Customers où cust.Orders.Any() sélectionnez cust; –

Répondre

1

La méthode d'extension All() vérifie un prédicat par rapport à tous les éléments; par exemple, lors de l'exécution:

if(order.Lines.All(l=>l.IsClosed)) order.Close(); 

(contrôle toutes les lignes sont fermées, et si oui, ferme l'ordre)

de dans une requête:

var qry = from order in ctx.Orders 
     where order.CustomerId = id 
     select new { 
      order.OrderId, 
      IsShipped = order.Lines.All(l => l.IsShipped) 
     }; 
+0

Comment gérer un cas où sélectionner tous les clients ayant une commande .. est-ce un bon candidat pour 'Tous'? – Viks

+0

non; ce serait Any - c'est-à-dire de cust dans ctx.Customers où cust.Orders.Any() sélectionnez cust; –

0

Si vous voulez obtenir les parents avec si tous ses enfants sont actifs.

from p in MyContext.Parents 
select new 
{ 
    p, 
    ChildrensActive = p.Childrens.All(c=> c.IsActive) 
} 
0
IEnumerable<CD> goodCDs = CDs 
    .Where(cd => cd.Songs.All(song => song.Rating > 6)) 
Questions connexes