Как мне написать SELECT FROM myTable WHERE id IN (SELECT ...) в Linq? - PullRequest
8 голосов
/ 05 сентября 2008

Как переписать это в Linq?

SELECT Id, Name FROM TableA WHERE TableA.Id IN (SELECT xx from TableB INNER JOIN Table C....)

Итак, на простом английском я хочу выбрать Id и Name из TableA, где Id TableA находится в наборе результатов из второго запроса.

Ответы [ 3 ]

10 голосов
/ 05 сентября 2008
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 }
4 голосов
/ 17 сентября 2008

LINQ поддерживает IN в виде содержимого. Подумайте «collection.Contains (id)» вместо «id IN (collection)».

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 }

Смотрите также этот блог пост .

1 голос
/ 05 сентября 2008

В LINQ нет встроенной поддержки IN. Вам необходимо объединить 2 запроса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...