Помощь Linq. int.Contains и int == iqueryable не работает

Обновлено: для внутренних запросов может быть более одного совпадения для каждого внутреннего запроса. Он захватывает кучу тегов с одинаковым 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'

Может ли кто-нибудь помочь мне написать хороший запрос, который будет работать?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
0
6 558
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Поскольку ваш внутренний запрос может возвращать несколько совпадений, вам просто нужно преобразовать внутренний запрос в список и изменить смысл предложения 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

РЕДАКТИРОВАТЬ Изменен запрос на основе новой информации.

К сожалению, я не могу подтвердить вас обоих в качестве ответа.

SpoiledTechie.com 19.11.2008 07:10

Похоже, что этот быстрее, хотя в нем больше строк синтаксиса LINQ и T-SQL. всего за несколько миллисекунд ....

SpoiledTechie.com 19.11.2008 07:15

Вместо 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", если вы можете получить несколько совпадений.

К сожалению, я не могу подтвердить вас обоих в качестве ответа.

SpoiledTechie.com 19.11.2008 07:11

Другие вопросы по теме