【发布时间】:2010-09-07 22:05:41
【问题描述】:
你如何在 Linq 中重写这个?
SELECT Id, Name FROM TableA WHERE TableA.Id IN (SELECT xx from TableB INNER JOIN Table C....)
所以用简单的英语,我想从 TableA 中选择 Id 和 Name,其中 TableA 的 Id 在第二个查询的结果集中。
【问题讨论】:
标签: 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 在第二个查询的结果集中。
【问题讨论】:
标签: sql linq linq-to-sql
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 }
另请参阅此博客post。
【讨论】:
LINQ 中没有对 IN 的开箱即用支持。您需要加入 2 个查询。
【讨论】: