我如何在Linq中的myTable WHERE id IN(SELECT ...)中写入SELECT?

时间:2020-03-05 18:48:10  来源:igfitidea点击:

我们如何在Linq中重写它?

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

因此,以通俗的英语来说,我想从TableA中选择ID和Name,其中TableA的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 }

回答

LINQ中没有对IN的现成支持。我们需要加入2个查询。

回答

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 }

另请参阅此博客文章。