Как написать SELECT FROM myTable WHERE id IN (SELECT…) в Linq?
-
09-06-2019 - |
Вопрос
Как переписать это в Linq?
SELECT Id, Name FROM TableA WHERE TableA.Id IN (SELECT xx from TableB INNER JOIN Table C....)
Итак, говоря простым языком, я хочу выбрать идентификатор и имя из таблицы A, где идентификатор таблицы A находится в наборе результатов второго запроса.
Решение
from a in TableA
where (from b in TableB
join c in TableC on b.id equals c.id
where .. select b.id)
.Contains(a.Id)
select new { a.Id, a.Name }
Другие советы
LINQ поддерживает IN в форме «содержит».Подумайте «collection.Contains(id)» вместо «id IN (коллекция)».
from a in TableA
where (
from b in TableB
join c in TableC
on b.id equals c.id
select b.id
).Contains(TableA.Id)
select new { a.Id, a.Name }
См. также этот блог почта.
В LINQ нет встроенной поддержки IN.Вам нужно объединить 2 запроса.
Не связан с StackOverflow