Соответствующий LINQ будет выглядеть следующим образом:
var posts = from p in context.Posts
join t in context.Tags on p.ID equals t.ID
select p;
Однако этот запрос не имеет особого смысла, поскольку между идентификаторами сообщений и идентификаторами сообщений нет явной связи.
Еслимы говорим о контексте, генерируемом 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};