Неоднозначный вызов в запросе Linq-To-Sql - PullRequest
3 голосов
/ 14 августа 2011

Я все еще немного новичок в Linq-To-SQL, и у меня возникла проблема, когда я пытаюсь использовать оператор соединения (что эквивалентно внутреннему соединению SQL).

Получить все настройки для пользователя:

return (from u in DataContext.UserPreference
join p in DataContext.Preference on p.Id equals u.PreferenceId
where u.UserId = userId
select p).ToList();

Visual Studio сообщает мне, что оператор «соединение» в запросе является «неоднозначным вызовом» между классом Enumerable и классом Queryable.

Есть идеи, как мне решить эту проблему?

Ответы [ 2 ]

6 голосов
/ 14 августа 2011

Ваше объединение выражено неверно - сначала вы должны использовать 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();

В основном вы используете первую переменную диапазона с левой стороны объединения, а вторую переменную с правой стороны.

Обычно такого рода ошибки обнаруживаются компилятором, который подсказывает, что именно не так. Я не знаю, почему это не так в этом случае, но в любом случае вышеприведенное должно быть исправлением.

3 голосов
/ 14 августа 2011

Я собираюсь не согласиться с Джоном.У вас есть оператор присваивания в 3-й строке вашего запроса, а не оператор равенства, поэтому вместо

return (from u in DataContext.UserPreference
        join p in DataContext.Preference on p.Id equals u.PreferenceId
        where u.UserId == userId
        select p).ToList();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...