我完全陷入了这个简单的查询,使用 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.
为什么无法翻译?