Вступить в клуб →
средняявопросEntity Framework Core и LINQ

Метод C# внутри Where: почему запрос не переводится в SQL

На актуальной версии EF Core в репозитории написан такой поиск:

private static string Normalize(string s) => s.Trim().ToLowerInvariant();

var users = await db.Users
    .Where(u => Normalize(u.Email) == normalized)
    .ToListAsync();

Что произойдёт при выполнении и как это правильно чинить?

  • Запрос выполнится, но вернёт пустой список: EF сравнит нормализованное значение с сырым значением из базы и совпадений не найдёт
  • EF переведёт вызов в SQL-функцию LOWER, запрос отработает штатно и воспользуется индексом по email
  • EF не сможет перевести пользовательский метод в SQL и выбросит исключение о непереводимом выражении
  • EF молча выполнит фильтр в памяти приложения: результат будет верным, просто медленным

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела