これをLinqでどのように書き換えますか?
SELECT Id, Name FROM TableA WHERE TableA.Id IN (SELECT xx from TableB INNER JOIN Table C....)
したがって、平易な英語では、TableA の Id が 2 番目のクエリの結果セットにある TableA から Id と Name を選択したいと考えています。
これをLinqでどのように書き換えますか?
SELECT Id, Name FROM TableA WHERE TableA.Id IN (SELECT xx from TableB INNER JOIN Table C....)
したがって、平易な英語では、TableA の Id が 2 番目のクエリの結果セットにある TableA から Id と Name を選択したいと考えています。
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 は、contains の形式で IN をサポートしています。「id IN (コレクション)」ではなく、「collection.Contains(id)」と考えてください。
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 }
このブログ投稿も参照してください。
LINQ には、すぐに使用できる IN のサポートはありません。2 つのクエリを結合する必要があります。