GroupJoin выдает ошибку в Entity Framework. Join работает нормально - PullRequest
0 голосов
/ 22 октября 2019
var conversationQABySubjectId = 
    _repoWrapper.ConversationQuestionAnswer
                .FindAll()
                .Where(a => a.SubjectId == subjectId)
                .GroupJoin(_repoWrapper.ContactInformation.FindAll(),
                           c => c.ResponderContactInformationIdentifier,
                           ci => ci.ContactInformationIdentifier,
                           (c, ci) => new { c, ci })
                .Select(m => new Tuple<Domain.TC_Context.ConversationQuestionAnswer,
                                 Domain.TC_Context.ContactInformation>(m.c, m.ci));

m.ci выдает эту ошибку, показанную ниже. Это работает, когда я использую Join. Я использую GroupJoin, так как я хочу присоединиться к таблице ContactInformation слева.

Аргумент 2: невозможно преобразовать из 'System.Collections.Generic.IEnumerable' в 'TrainingCenter. Domain.TC_Context.ContactInformation '

Добавлены SelectMany и DefaultIfEmpty, но ни одна не работает .. Ниже приведен код

var conversationQABySubjectId = _repoWrapper.ConversationQuestionAnswer.FindAll()
                                    .Where(a => a.SubjectId == subjectId)
                                    .GroupJoin(_repoWrapper.ContactInformation.FindAll(),
                                    c => c.ResponderContactInformationIdentifier,
                                    ci => ci.ContactInformationIdentifier,
                                    (c, ci) => new { c, ci })
                                    .SelectMany(cci => cci.ci.DefaultIfEmpty(), (c, ci) => new { c, ci })
                                    .Select(m => new Tuple<Domain.TC_Context.ConversationQuestionAnswer,
                                                            Domain.TC_Context.ContactInformation>(m.c, m.ci));

1 Ответ

0 голосов
/ 25 октября 2019

Ниже показано, как я исправил проблему.

var conversationQABySubjectId = _repoWrapper.ConversationQuestionAnswer.FindAll()
                                        .Where(a => a.SubjectId == subjectId)
                                        .GroupJoin(_repoWrapper.ContactInformation.FindAll(),
                                        c => c.ResponderContactInformationIdentifier,
                                        ci => ci.ContactInformationIdentifier,
                                        (c, ci) => new { c, ci })
                                        .SelectMany(m => m.ci.DefaultIfEmpty(), (m,n) => new Tuple<Domain.TC_Context.ConversationQuestionAnswer,
                                                               Domain.TC_Context.ContactInformation>(m.c, n));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...