Использование Entity Framework Core 2.2 У меня следующий запрос:
var user = await context.Users.AsNoTracking()
.Include(x => x.Lessons).ThenInclude(x => x.LessonLevel)
.FirstOrDefaultAsync(x => x.Id == userId);
var lessons = context.Lessons.AsNoTracking();
.Where(x => x.LessonLevelId < user.Lessons.Max(y => y.LessonLevelId));
Таким образом, запрос оценивается локально, и я получаю сообщение:
The LINQ expression 'Max()' could not be translated and will be evaluated locally.'
Как сделать так, чтобы этот запрос оценивался на сервере?
Обновление
Основываясь на ответе DavigG, я заставил его работать, используя:
var maxLessonLevelId = user.Lessons.Max(y => y.LessonLevelId););
var lessons = context.Lessons.AsNoTracking();
.Where(x => x.LessonLevelId < maxLessonLevelId);
Я знаю, что следующее оценивает локально, но не должно оцениваться на сервере?
var lessons = context.Lessons.AsNoTracking();
.Where(x => x.LessonLevelId <
context.Users.AsNoTracking()
.Where(y => y.Id == userId)
.Select(y => y.Lessons.Max(z => z.LessonLevelId))
.FirstOrDefault());
Можно ли использовать дочерние запросы, которые оцениваются на сервере?