我正在使用带有EF codefirst的asp.net 4.5.1 webform; 有两类产品和类别;每个产品可以有很多类别。每个类别都可以有很多产品。当我想按用户选择所选类别中的所有产品时,我使用:
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的集合,而不是单个id。