我在编写涉及2对多关系的Linq查询时遇到问题。 我有以下实体:项目 - 标签 - 类别 物品有许多与Tag 使用Tag
,类别有多对多我的实体的结构如下(我使用db第一种方法)
- 类别(CategoryId,CategoryName,标签的ICollection)
- 标签(TagId,TagName)
- 项目(ItemId,ItemName,标签的ICollection)
我想获得每个类别的项目列表
知道如何实现这个目标吗?
答案 0 :(得分:1)
var itemPerCategories =
db.Category.ToDictionary(
c => c.CategoryName,
c => c.Tags.SelectMany(t => t.Items)).ToList())
);
itemPerCategories是一个字典,其关键是一个类别的名称,value是该类别中所有项目的列表
答案 1 :(得分:0)
如果没有实体类结构,它有点难以回答,但应该是这样的:
var categories = context.Categories.Where(c => c.Items.Any(i => i.Tags.Any(t => t.Name == "myTagName"))).ToList();
答案 2 :(得分:0)
找到答案:
var items =来自db.Category中的c
来自于T.Tag的
从我在t.Item
其中c.CategoryName ==“categoryname”
选择i;