有两个表:帖子和标签。另一个名为PostsTags的表同时具有Posts和Tags表的id。以下SQL查询的对应LINQ是什么。
SELECT *
FROM Posts
INNER JOIN Tags ON Posts.ID = Tags.ID
如何检索两个表的值
答案 0 :(得分:1)
相应的LINQ将如下所示:
var posts = from p in context.Posts
join t in context.Tags on p.ID equals t.ID
select p;
然而,该查询没有多大意义,因为帖子ID和标签ID之间没有任何明确的连接。
如果我们谈论LINQ to SQL生成的上下文,那么你可以用这个检索所有的帖子和标签对:
var postsTags = from pt in context.PostsTags
select new {Post = pt.Post, Tag = pt.Tags};
就像那样。如果两个表之间存在外键关系,LINQ将自行处理获取引用对象的所有工作。
但是,如果我们谈论其他LINQ(LINQ to Objects,LINQ to XML),那么这里是您需要的查询:
var postsTags = from pt in context.PostsTags
join p in context.Posts on pt.PostID equals p.ID
join t in context.Tags on pt.TagID equals t.ID
select new {Post = p, Tag = t};
答案 1 :(得分:0)
如果您没有任何导航属性,并且想要加入Linq中的两个集合,您将得到:
var result = from p in Posts
join t in Tags on p.ID equals t.ID
select new { Post = p, Tag = t };