entity framework核心/ SQLite:加入“扁平化”结果后的GroupJoin

使用Entity Framework Core 2.1和SQLite数据库,如果我在另一个Join之后使用它,我会从LINQ GroupJoin获得不同的行为。 目前尚不清楚这是一个错误还是我忽略了什么。

我创建了一个最小的VS2017项目来重现这个,可以在这里找到:
https://gitlab.com/haddoncd/EntityFrameworkGroupJoinIssue

在这个例子中,我为Blog表中的每一行获取一个对象,每个对象包含多个PostTitles:

db.Blogs .GroupJoin( db.Posts, s => s.BlogId, p => p.BlogId, (s, ps) => new { s.BlogId, s.BlogTitle, PostTitles = ps.Select(p => p.PostTitle), } ) .OrderBy(x => x.BlogId)) 

但是在这个例子中,结果是“扁平的” – 我为每个Blog-Post对获得一个对象,就像你从传统的SQL外连接一样:

 db.Subscriptions .Join( db.Blogs, s => s.BlogId, b => b.BlogId, (s, b) => new { s.SubscriptionId, b.BlogId, b.BlogTitle, } ) .GroupJoin( db.Posts, x => x.BlogId, p => p.BlogId, (x, ps) => new { x.SubscriptionId, x.BlogTitle, PostTitles = ps.Select(p => p.PostTitle), } ) .OrderBy(x => x.SubscriptionId))