2014-01-13 102 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的集合,不是单身身份证。