首页 > 解决方案 > 如何将 Sql 查询转换为 Linq 及其在 Entity Framework Core 中的 Join() 方法的等价物

问题描述

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 中的方法和 lambda 表达式的等价物?

在此处输入图像描述

标签: c#sqllinqlinq-to-sqlentity-framework-core

解决方案


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);

推荐阅读