Как написать SELECT FROM myTable WHERE id IN (SELECT…) в Linq?

StackOverflow https://stackoverflow.com/questions/45634

  •  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 запроса.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top