github.com/aspnet/EntityFrameworkCore/issues/13271

ьзуя Entity Framework Core 2.1 и базу данных SQLite, я получаю другое поведение от LINQ GroupJoin, если использую его после другого Join. Не ясно, если это ошибка или есть что-то, что я пропускаю.

Я создал минимальный проект VS2017 для воспроизведения этого, который можно найти здесь:
https://gitlab.com/haddoncd/EntityFrameworkGroupJoinIssue

В этом примере я получаю один объект для каждой строки в таблице блогов, каждый из которых содержит несколько заголовков 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))

Ответы на вопрос(0)

Ваш ответ на вопрос