Enfity 框架无法通过具有左外连接的查询来转换组

问题描述 投票:0回答:0

我完全陷入了这个简单的查询,使用 Entity Framework Core 6 制作,它应该返回问题列表,计算每个问题的答案数量(就像一个论坛......):

questions = from q in context.ExpertsForumQuestions
        join a in context.ExpertsForumAnswers on q.ExpertsForumQuestionId equals a.ExpertsForumQuestionId into ja
        from a in ja.DefaultIfEmpty()
        join ui in context.UserInfos on q.UserInfoId equals ui.UserInfoId
        where q.Languageid == languageId
        group q by new {q,ui} into g
        select new QuestionListItem
        {
            ExpertsForumQuestionId = g.Key.q.ExpertsForumQuestionId,
            Title = g.Key.q.Title,
            FirstNameSubmitter = g.Key.ui.FirstName,
            LastNameSubmitter = g.Key.ui.LastName,
            Categories = g.Key.q.Categories,
            NumberOfAnswers = g.Count()
        };

EF 无法翻译它,返回此错误消息:

The LINQ expression 'DbSet<ExpertsForumQuestion>()
.LeftJoin(
    inner: DbSet<ExpertsForumAnswer>(), 
    outerKeySelector: e => e.ExpertsForumQuestionId, 
    innerKeySelector: e0 => e0.ExpertsForumQuestionId, 
    resultSelector: (e, e0) => new TransparentIdentifier<ExpertsForumQuestion, ExpertsForumAnswer>(
        Outer = e, 
        Inner = e0
    ))
.Join(
    inner: DbSet<UserInfo>(), 
    outerKeySelector: ti => ti.Outer.UserInfoId, 
    innerKeySelector: u => u.UserInfoId, 
    resultSelector: (ti, u) => new TransparentIdentifier<TransparentIdentifier<ExpertsForumQuestion, ExpertsForumAnswer>, UserInfo>(
        Outer = ti, 
        Inner = u
    ))
.GroupBy(ti0 => new { 
    q = ti0.Outer.Outer, 
    ui = ti0.Inner
 })' could not be translated. Either rewrite the query in a form that can be translated, or switch to client evaluation explicitly by inserting a call to 'AsEnumerable', 'AsAsyncEnumerable', 'ToList', or 'ToListAsync'. See https://go.microsoft.com/fwlink/?linkid=2101038 for more information.

为什么无法翻译?

c# entity-framework-core linq-to-entities
© www.soinside.com 2019 - 2024. All rights reserved.