【问题标题】:Reverse Link Query反向链接查询
【发布时间】:2014-01-13 09:56:09
【问题描述】:

我正在使用带有 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);

此代码工作品。我的问题是如何在反向视图中编写此查询? 让我解释一下,这段代码是选择用户选择的类别,然后选择这些类别中的所有产品。(从类别视图) 但我想从产品视图中执行此操作,这意味着首先选择产品然后检查产​​品是否属于该类别。

我知道两个查询的结果是一样的。但我需要这样做。

【问题讨论】:

  • 产品和类别在您的代码中如何关联?请显示您拥有的键和/或导航属性

标签: c# linq entity-framework ef-code-first


【解决方案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。

【讨论】:

    猜你喜欢
    • 2014-10-03
    • 1970-01-01
    • 2021-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-08
    相关资源
    最近更新 更多