Как переписать это в Linq?
SELECT Id, Name FROM TableA WHERE TableA.Id IN (SELECT xx from TableB INNER JOIN Table C....)
Итак, на простом английском я хочу выбрать Id и Name из TableA, где Id TableA находится в наборе результатов из второго запроса.
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 (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 }
Смотрите также этот блог пост .
В LINQ нет встроенной поддержки IN. Вам необходимо объединить 2 запроса.