8

你如何在 Linq 中重写它?

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

所以用简单的英语,我想从 TableA 中选择 Id 和 Name,其中 TableA 的 Id 在第二个查询的结果集中。

4

3 回答 3

10
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 }
于 2008-09-05T12:27:28.647 回答
4

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 }

另请参阅此博客文章

于 2008-09-17T18:36:45.430 回答
1

LINQ 中没有对 IN 的开箱即用支持。您需要加入 2 个查询。

于 2008-09-05T12:27:32.140 回答