在实体框架核心的多对多关系中的内连接问题



我想启动一个跨两个表的查询,这两个表是多对多相关的,在实体框架core 5中,不需要创建中间表的c#类。所以包含我启动查询左连接是正确的,但我需要启动一个内部连接,我不能,因为我没有中间表的c#类。如果不创建中间表的c#类,怎么可能做到这一点呢?

thank you very much

在LINQ to Entities查询中,不需要中间实体来实现内部连接。你只需要SelectMany而不需要DefaultIfEmpty()

例如,使用文档中多对多部分的示例模型:
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 });

最新更新