Linq查询与2对多关系

时间:2013-04-12 15:43:18

标签: c# linq many-to-many

我在编写涉及2对多关系的Linq查询时遇到问题。 我有以下实体:项目 - 标签 - 类别 物品有许多与Tag 使用Tag

,类别有多对多

我的实体的结构如下(我使用db第一种方法)
- 类别(CategoryId,CategoryName,标签的ICollection)
- 标签(TagId,TagName)
- 项目(ItemId,ItemName,标签的ICollection)

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

知道如何实现这个目标吗?

3 个答案:

答案 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;