2011-03-25 140 views
0

我有3个表名为Posts,TagsPostXTagsPostXTags是连接在文章和标签之间。linq查询内部连接和左连接的问题

我试图让在LINQ下面的查询,但我从来没有达到理想的效果。

请帮我写正确的LINQ此查询:

SELECT * FROM Posts 
INNER JOIN PostXTags 
ON Posts.PostID = PostXTags.PostID 
LEFT JOIN Tags 
ON PostXTags.TagID = Tags.TagID 
+0

发布LINQ查询你都试过了。 – gideon 2011-03-25 16:37:23

+1

的唯一效果'在SQL LEFT JOIN'会引起一些行从'POSTS'重复。我猜这不是你真正想要的。它将帮助,如果你表现出的实际问题,你正在试图解决,而不是制造的例子。 – 2011-03-25 18:25:55

回答

0
var query = from p in Posts 
      join x in PostXTags on p.PostID equals x.PostID 
      join t in Tags on x.TagID equals t.TagID into joinedTags 
      from t in joinedTags.DefaultIfEmpty() //left join     
      select new { Posts = p, Tags = t }; //t could be null 
0

我觉得要实现这一点:

var query = context.Tags.Where(t => t.Id == id).SelectMany(t => t.Posts);