Я хочу сделать запрос к БД с помощью LINQ-руководства по написанию SQL, мой метод linq:
var q = db.TableView.Where(sqlAfterWhere);
returnValue = q.Count();
этот метод хорошо запрашивает, передано ли значение переменной "sqlAfterWhere": (эта переменная имеет тип String)
it.Name = 'xyz'
но что, если я хочу использовать предложение IN, используя подзапрос. (мне нужно использовать 'it' перед каждым именем столбца в вышеприведенном запросе для работы), я не могу использовать 'it' перед столбцами подзапроса в качестве отдельного запроса, так что мне делать, если я не использую какую-либо вещь, и использование имен столбцов напрямую выдает ошибку, говорящую <ColumnName> could not be resolved
, где <ColumnName>
- это имена моих столбцов без 'it' в начале.
Итак, запрос не работает: (это строка, переданная в указанную выше переменную):
it.Name IN (SELECT Name FROM TableName WHERE Address LIKE '%SomeAddress%')
ошибки появляются как:
Имя не может быть разрешено
Адрес
не может быть решена
Точная ошибка:
"" Имя "не может быть разрешено в текущей области или контексте. Убедитесь, что все переменные, на которые есть ссылки, находятся в области, что необходимые схемы загружены и что на пространства имен ссылаются правильно., Рядом с простым идентификатором, строка 6, столбец 25. "
Та же ошибка для "Адреса"
если я использую «это». перед этими столбцами выдает ошибку как:
"Тип элемента 'Edm.Int32' и CollectionType 'Transient.collection [Transient.rowtype (GroupID, Edm.Int32 (Nullable = True, DefaultValue =))]' несовместимы. Выражение IN поддерживает только сущность , примитивный и ссылочный типы., возле предиката WHERE, строка 6, столбец 14. "