Как я могу преобразовать Sql запрос в Linq и его эквивалент с помощью метода Join () в Entity Framework Core - PullRequest
1 голос
/ 29 марта 2020
select 
    a.*
from
    Article a join 
    ArticleTag at on a.Id = at.ArticleId join
    Tag t on at.TagId = t.Id 
where
    t.Id=8

Также у меня есть доступ к IQueryable<Article>, IQueryable<Tag> и IQueryable<ArticleTag> объектам.

Как мне преобразовать этот Sql запрос в Linq и его эквивалент с помощью метода Join() и лямбда-выражение в Entity Framework Core?

enter image description here

Ответы [ 2 ]

1 голос
/ 29 марта 2020
var innerJoinQuery =
    from a in Article
    join at in ArticleTag on a.Id equals at.ArticleId
    where at.TagId == 8
    select a;

Это самый эффективный способ сделать это. Если вы используете расширения LINQ

, могут быть хитрые "вещи", которые EF может сделать, но если вы настаиваете ...

var innerJoinResult = 
    Articles.Join(ArticleTags.Where(x => x.TagId == 8),
                  a => a.Id,
                  at => at.ArticleId,  
                  (a, at) => a);
0 голосов
/ 29 марта 2020

Если у вас есть Iqueryable articleTags, список статей можно выбрать с помощью

articleTags.Where(a => a.Tag.id = 8).Select (a -> a.ArticleTag );
...