Linq で SELECT FROM myTable WHERE id IN (SELECT…) を記述するにはどうすればよいですか?
-
09-06-2019 - |
質問
これをLinqで書き直すにはどうすればよいでしょうか?
SELECT Id, Name FROM TableA WHERE TableA.Id IN (SELECT xx from TableB INNER JOIN Table C....)
つまり、平易な英語で言うと、TableA の ID が 2 番目のクエリの結果セットに含まれる、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 は、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 つのクエリを結合する必要があります。
所属していません StackOverflow