我的数据库中有一个多对多的关系。两端的表是 BlogPost 和 Item,中间的表是 ItemBlogPost。我需要取回与特定项目相关的所有 BlogPost。在 SQL 中,我会这样做:
SELECT BlogPost.*
FROM BlogPost
JOIN ItemBlogPost ON BlogPost.ID = ItemBlogPost.BlogPost_ID
WHERE ItemBlogPost.Item_ID = @Item_ID
在 C# 中我有类似的东西:
IQueryable<BlogPost> itemBlogPosts = from b in connection.BlogPosts
where b.Items == item.ID
orderby b.Content.CreateDate descending
select b;
但是,标记为 b.Items 的行没有给我 Item 属性的列表,也没有 b.ItemBlogPost 来查看中间表。我也尝试过 b.Items.Contains(item)
但也失败了。如何在 LINQ to EF4 中完成这项工作?
最佳答案
这个怎么样:
var itemBlogPosts = from i in connection.Items
from b in i.BlogPosts // I suppose you have a nav. property on Item
where i.Id == itemId
select b;
同样的查询也可以定义为:
var itemBlogPosts = connection.Items
.Where(i => i.Id == itemId)
.SelectMany(i => i.BlogPosts);
关于c# - Entity Framework 4 中的多对多查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5587288/