var baseQuery = Context.Questions.AsNoTracking().Where(x => x.Active && x.QuestionFoils.Any());
// Получает 30
baseQuery = baseQuery.Where(x => x.QuestionReferences.Any());
// Получает 2
baseQuery = baseQuery.Where(
x => x.QuestionReferences.Any(qr =>
listNames.Any(name =>
name.FirstName == qr.Reference.ReferenceProfessors.Professor.FirstName &&
name.LastName == qr.Reference.ReferenceProfessors.Professor.LastName
)));
countCount = baseQuery.Count();
Когда я пытаюсь выполнить какую-либо операцию над запросом, выдается исключение InvalidOperationException: LINQ выражение '' не может быть переведено.
InvalidOperationException: выражение LINQ 'Any, ReferenceProfорес>, профессор >> (источник: LeftJoin, ReferenceProfорес>, профессор, Nullable, TransparentIdentifier, ReferenceProf Professor>, профессор> > (external: LeftJoin, ReferenceProfSSore, Nullable, TransparentIdentifier, ReferenceProfSS >> (external: Join, TransparentIdentifier> (external: Где (source: DbSet, Предикат: (q2) => Свойство> (EntityShaperExpression: EntityType: Вопрос ЗначениеBufferExpression: ProjectionBindingExpression: ProjectionBindingExpression EmptyProjectionMember IsNullable: False, "QuestionId") == Свойство> (q2, "QuestionId")), inner: DbSet, outerKeySelector: (q2) => Свойство> (q2, "ReferenceId"), innerKeySelector: (r) => Свойство> (r, "ReferenceId"), resultSelector: (o, i) => новый TransparentIdentifier (Outer = o, Inner = i)) , inner: DbSet, outerKeySelector: (q2) => Свойство> (q2.Inner, "ReferenceId"), innerKeySelector: (r0) => Свойство> (r0, "ReferenceId"), resultSelector: (o, i) => новый TransparentIdentifier, ReferenceProfutors> (Outer = o, Inner = i)), inner: DbSet, outerKeySelector: (q2) => Свойство> (q2.Inner, "ProfessorId"), innerKeySelector: (p) => Свойство> (p , "ProfessorId"), resultSelector: (o, i) => новый TransparentIdentifier, ReferenceProf Professor>, профессор> (Outer = o, Inner = i)), предикат: (q2) => Any (source: (необработанный параметр: __listNames_0 ), предикат: (name) => name.FirstName == q2.Inner.FirstName && name.LastName == q2.Inner.LastName)) 'не удалось перевести. Либо переписать запрос в форме, которую можно перевести, либо явно переключиться на оценку клиента, вставив вызов либо AsEnumerable (), AsAsyncEnumerable (), ToList (), либо ToListAsyn c (). См. https://go.microsoft.com/fwlink/?linkid=2101038 для получения дополнительной информации.
Все с одной таблицей работает просто отлично:
baseQuery = baseQuery.Where(x => x.QuestionCourses.Any(qc => courses.Any(name => name == qc.Course.Name)));
Как бы я переписал следующее, чтобы не бросать эта ошибка?
x => x.QuestionReferences.Any(qr =>
listNames.Any(name =>
name.FirstName == qr.Reference.ReferenceProfessors.Professor.FirstName &&
name.LastName == qr.Reference.ReferenceProfessors.Professor.LastName
))