2010-02-14 4 views
3

J'ai un petit problème que je ne sais pas vraiment résoudre. Dans mon exemple ci-dessous, je voudrais sélectionner une liste de ProductCategories avec ProductItems qui sont actifs.linq to entity - inclure avec l'expression lambda

public IEnumerable<ProductCategory> ListProductCategories() 
     { 
      return _entities.ProductCategorySet.Include("ProductItems").Where(x => x.ProductItems.Active == true).ToList();    
     } 

Le problème est que je ne peux pas accéder à la propriété productItem active dans mon expression lambda, quel est le problème? Est-ce que je pense totalement faux quand j'essaye d'écrire une requête linq comme celle ci-dessus?

Répondre

6

Il peut y avoir plus d'un élément. Vous voulez probablement sélectionner les catégories dans lesquelles tous articles sont actifs:

return _entities.ProductCategorySet 
       .Include("ProductItems") 
       .Where(x => x.ProductItems.All(item => item.Active)) 
       .ToList(); 
+0

la solution ne résout pas vraiment le problème. Votre solution renvoie uniquement les catégories de produits avec des produits. Peu importe s'ils sont actifs ou non. Ce que je veux retourner est toutes les productcategories et productitems seulement où productitems est actif == true. – Webking

+1

Peut-être que vous voulez tout au lieu de tout? Je vais mettre à jour ma réponse. –

Questions connexes