Ваше объединение выражено неверно - сначала вы должны использовать u
, затем p
:
return (from u in DataContext.UserPreference
join p in DataContext.Preference on u.PreferenceId equals p.Id
where u.UserId == userId
select p).ToList();
В основном вы используете первую переменную диапазона с левой стороны объединения, а вторую переменную с правой стороны.
Обычно такого рода ошибки обнаруживаются компилятором, который подсказывает, что именно не так. Я не знаю, почему это не так в этом случае, но в любом случае вышеприведенное должно быть исправлением.