Linq で SELECT FROM myTable WHERE id IN (SELECT…) を記述するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/45634

  •  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 つのクエリを結合する必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top