LINQ провайдеры просматривают ваше дерево выражений и пытаются из него сгенерировать эквивалентный TSQL (и т. Д.).Это работает только для распознанных методов или распознанных сценариев выражений.
Он не может посмотреть произвольный метод в вашем коде C # и выполнить его в базе данных.
Однако!Вы могли бы упростить запрос для этого:
var hash = GenerateHashWithSalt(password, GetUserID(username);
var count =context.Users.Count(u => u.Password == hash);