我想启动一个跨两个表的查询,这两个表是多对多相关的,在实体框架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 });