0

我在编写涉及 2 个多对多关系的 Linq 查询时遇到问题。我有以下实体: 项目 - 标签 - 类别 项目有一个多对多的标签 类别有一个多对多的标签

我的实体的结构如下(我使用了 db first 方法)
- Category(CategoryId, CategoryName, ICollection of Tag)
- Tag(TagId, TagName)
- Item(ItemId, ItemName, ICollection of Tag)

我想获取每个类别的项目列表

知道如何实现这一点吗?

4

3 回答 3

1
var itemPerCategories = 
        db.Category.ToDictionary(
            c => c.CategoryName,
            c => c.Tags.SelectMany(t => t.Items)).ToList())
        );

itemPerCategories 是一个字典,其中 key 是类别的名称,value 是类别中所有项目的列表

于 2013-04-13T07:16:04.650 回答
0

没有实体类结构有点难以回答,但应该是这样的:

var categories = context.Categories.Where(c => c.Items.Any(i => i.Tags.Any(t => t.Name == "myTagName"))).ToList();
于 2013-04-12T15:46:22.317 回答
0

找到答案:
var items = from c in db.Category
from t in c.Tag
from i in t.Item
where c.CategoryName == "categoryname"
select i;

于 2013-04-12T18:26:29.837 回答