これは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が2番目のクエリの結果セットにあるTableAからIdとNameを選択します。
これは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が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のINには、アウトオブボックスのサポートはありません。 2つのクエリを結合する必要があります。
LINQは、INを含む形でINをサポートします。 "id IN(collection)"の代わりに "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 }
このブログもご覧ください。post