如何在Linq中编写SELECT FROM myTable WHERE id IN(SELECT ...)?

时间:2008-09-05 12:22:32

标签: sql linq linq-to-sql

你如何在Linq中重写这个?

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

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

3 个答案:

答案 0 :(得分: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 }

答案 1 :(得分:4)

LINQ以contains的形式支持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 }

另请参阅此博客post

答案 2 :(得分:1)

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