你如何在Linq中重写这个?
SELECT Id, Name FROM TableA WHERE TableA.Id IN (SELECT xx from TableB INNER JOIN Table C....)
所以用简单的英语,我想从TableA中选择Id和Name,其中TableA的Id在第二个查询的结果集中。
答案 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个查询。