提问人:ScottG 提问时间:9/5/2008 更新时间:10/1/2012 访问量:10547
如何在Linq中编写SELECT FROM myTable WHERE id IN (SELECT...)?
How do I write SELECT FROM myTable WHERE id IN (SELECT...) in Linq?
问:
如何在 Linq 中重写它?
SELECT Id, Name FROM TableA WHERE TableA.Id IN (SELECT xx from TableB INNER JOIN Table C....)
因此,用简单的英语来说,我想从 TableA 中选择 Id 和 Name,其中 TableA 的 Id 位于第二个查询的结果集中。
答:
10赞
John Boker
9/5/2008
#1
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赞
aku
9/5/2008
#2
LINQ 中没有对 IN 的现成支持。您需要联接 2 个查询。
4赞
9/18/2008
#3
LINQ 以 contains 的形式支持 IN。想想“收藏。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 }
另请参阅这篇博文。
评论