2010-02-14 62 views
3

我有一個精簡版問題,我真的不知道如何解決。在我的示例下面,我想選擇一個ProductItems列表ProductItems是活躍的。linq to entity - 包含lambda表達式

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

問題是我無法訪問productItem屬性在我的lambda表達式中激活,是什麼問題?當我試圖編寫像上面那樣的linq查詢時,我認爲總是錯的嗎?

回答

6

可能有多個項目。你可能想選擇的類別中,所有項處於有效狀態:

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

解決方案並沒有真正解決問題。您的解決方案僅返回包含任何產品項目的產品類別。無論他們是否活躍,都無關緊要。 我想要返回的是所有產品類別和產品項目,只有當產品項目處於活動狀態時== true。 – Webking 2010-02-14 10:55:07

+1

也許你想要所有而不是任何?我會更新我的答案。 – 2010-02-14 12:16:12