2014-01-13 201 views
0

我正在使用asp.net 4.5.1 webform與EF codefirst; 有兩類產品和類別;每個產品可以有多個類別。每個類別可以有很多產品。當我想要按用戶選擇所選類別中的所有產品時,我使用:反向鏈接查詢

List<int> CatId = new List<int>(); 
// add all the selected category Id to the CatId list. 
_db.Categories.Where(p => CatId.Contains(p.CategoryID)).SelectMany(p => p.Products); 

此代碼適用於貨物。我的問題是,我怎麼能在反向視圖中寫這個查詢? 讓我來解釋更多,這個代碼是選擇用戶選擇的類別,然後選擇這些類別中的所有產品(從類別視圖) 但我想從產品視圖執行此操作,這意味着首先選擇產品,然後檢查產​​品是否在該類別與否。

我知道這兩個查詢的結果是相同的。但我需要這樣做。

+0

產品和類別如何與代碼相關?請顯示您擁有的鍵和/或導航屬性 –

回答

1

如果產品只有一個類別:

_db.Products.Where(p => CatId.Contains(p.Category.CategoryID)); 

如果產品可以有多個類別:

_db.Products.Where(p => p.Categories.Any(c => CatId.Contains(c.CategoryID))); 

也可考慮重命名類別的ID列表categoryIds,以表明它是ID的集合,不是單身身份證。