与 entity framework 核心 5 的多对多关系中的内部连接问题

problem with inner join in many-to-many relationships with entity framework core 5

我想发起一个跨多对多相关的两个 table 的查询,并且在 entity framework 核心 5 中,没有必要创建 c# class中间 table。因此,对于 include,我使用正确的左连接启动查询,但我需要启动内部连接,但我不能,因为我没有中间 table 的 c# class。不用创建中间体 table 的 c# class 怎么可能做到这一点?

非常感谢

您不需要中间实体即可在 LINQ to Entities 查询中实现内部联接。你只需要 SelectMany 没有 DefaultIfEmpty().

例如,使用文档 Many-to-many 部分的示例模型:

public class Post
{
    public int PostId { get; set; }
    public string Title { get; set; }
    public string Content { get; set; }

    public ICollection<Tag> Tags { get; set; }
}

public class Tag
{
    public string TagId { get; set; }

    public ICollection<Post> Posts { get; set; }
}

以下将生成内部联接:

var query = from post in db.Posts
            from tag in post.Tags
            select new { post, tag };

或使用方法语法

var query = db.Posts
    .SelectMany(post => post.Tags, (post, tag) => new { post, tag });