изменение синтаксиса sql JOIN на LINQ - PullRequest
0 голосов
/ 03 декабря 2011

Есть две таблицы: сообщения и теги. Есть еще одна таблица, которая называется PostsTags и имеет идентификатор таблицы и тегов. что такое соответствующий LINQ для запроса ниже SQL.

SELECT *
FROM Posts
INNER JOIN Tags ON Posts.ID = Tags.ID

и как я могу получить значение обеих таблиц

Ответы [ 2 ]

1 голос
/ 03 декабря 2011

Соответствующий 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};
0 голосов
/ 03 декабря 2011

Если у вас нет навигационных свойств и вы хотите объединить две коллекции в Linq, вы получите:

var result = from p in Posts
            join t in Tags on p.ID equals t.ID
            select new { Post = p, Tag = t };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...