你如何在Linq中重寫?如何在Linq中編寫SELECT FROM myTable WHERE ID IN(SELECT ...)?
SELECT Id, Name FROM TableA WHERE TableA.Id IN (SELECT xx from TableB INNER JOIN Table C....)
所以用簡單的英語,我想從TableA的選擇ID和名在表A的ID是從第二查詢的結果集。
你如何在Linq中重寫?如何在Linq中編寫SELECT FROM myTable WHERE ID IN(SELECT ...)?
SELECT Id, Name FROM TableA WHERE TableA.Id IN (SELECT xx from TableB INNER JOIN Table C....)
所以用簡單的英語,我想從TableA的選擇ID和名在表A的ID是從第二查詢的結果集。
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 }
LIN在LIN中沒有對IN的支持。您需要加入2個查詢。
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。