Обновлено: для внутренних запросов может быть более одного совпадения для каждого внутреннего запроса. Он захватывает кучу тегов с одинаковым game_ID. Вот почему .First или .Max не работают.
Нужна помощь, у меня есть запрос в LINQ, который выглядит так:
from yy in Tags_Lookups
where yy.Tag_ID == (from xx in Tags_Lookups
where xx.Game_ID == new Guid("4962d645-711c-4db8-a7ce-ae9b36dd730c")
select xx.Tag_ID)
select yy
Я получаю следующее сообщение об ошибке:
Оператор '==' нельзя применять к операндам типа int и System.Linq.IQueryable
Я тоже пробовал это без везения:
from yy in Tags_Lookups
where yy.Tag_ID.Contains(from xx in Tags_Lookups
where xx.Game_ID == new Guid("4962d645-711c-4db8-a7ce-ae9b36dd730c")
select xx.Tag_ID)
select yy
С этой ошибкой:
'int' не содержит определения для 'Contains', и не может быть найден метод расширения 'Contains', принимающий первый аргумент типа 'int'
Может ли кто-нибудь помочь мне написать хороший запрос, который будет работать?





Поскольку ваш внутренний запрос может возвращать несколько совпадений, вам просто нужно преобразовать внутренний запрос в список и изменить смысл предложения contains, я думаю.
from yy in Tags_Lookups
where (from xx in Tags_Lookups
where xx.Game_ID == new Guid("4962d645-711c-4db8-a7ce-ae9b36dd730c")
select xx.Tag_ID).ToList()
.Contains( yy.Tag_ID )
select yy
РЕДАКТИРОВАТЬ Изменен запрос на основе новой информации.
Похоже, что этот быстрее, хотя в нем больше строк синтаксиса LINQ и T-SQL. всего за несколько миллисекунд ....
Вместо Max () это, вероятно, должно быть SingleOrDefault (), поскольку вы никогда не должны получать более одной записи с поиском по GUID. И то, и другое доставит вас туда. Суть в том, что внутренний запрос представляет собой коллекцию, и вам нужно указать ему, как выбрать одну строку из этой коллекции.
Только что видел редактирование - я думаю, это то, что вы хотите (хотя проверьте мой синтаксис):
from yy in Tags_Lookups
join xx in Tags_Lookups on yy.Tag_ID Equals xx.Tag_ID
where xx.Game_ID == new Guid("4962d645-711c-4db8-a7ce-ae9b36dd730c")
select yy
Это даст вам значение Tags_Lookups для каждого совпадающего Game_ID. Вы можете заключить все это в круглые скобки и добавить ".Distinct", если вы можете получить несколько совпадений.
К сожалению, я не могу подтвердить вас обоих в качестве ответа.
К сожалению, я не могу подтвердить вас обоих в качестве ответа.