ホームページ >データベース >mysql チュートリアル >SQL の IN サブクエリを LINQ to SQL に変換するにはどうすればよいですか?
LINQ to SQL での IN サブクエリの処理
LINQ to SQL では、IN サブクエリを処理する必要が生じる場合があります。 SQL の一般的な操作。シナリオを考えてみましょう:
質問:
次の SQL クエリを LINQ to SQL に変換するにはどうすればよいですか?
SELECT f.* FROM Foo f WHERE f.FooId IN ( SELECT fb.FooId FROM FooBar fb WHERE fb.BarId = 1000 )
回答:
このようなクエリを LINQ で実装するには、 SQL では、
1 という 2 つの概念を使用する必要があります。キーのコレクションとしてのサブクエリ:
まず、IN 句の条件を満たすキーのコレクションとしてサブクエリを定義します。
var fooBarIds = from fb in context.FooBar where fb.BarId == 1000 select fb.FooId;
2. Contains メソッドを使用したクエリ:
次に、キーのコレクションに対して Contains メソッドを使用して、指定された FooId が存在するかどうかを確認できます。
var result = from f in context.Foo where fooBarIds.Contains(f.FooId) select f;
このクエリはすべてを返します。 Foo テーブルから取得した FooId のコレクションに FooId が存在する行sub-query.
拡張ユースケース:
同じ原則を、EXISTS:
// EXISTS var q = from t1 in table1 let t2s = from t2 in table2 where <Conditions for table2> select t2.KeyField where t2s.Any(t1.KeyField) select t1;などの他のサブクエリ操作の実装に適用できます。
以上がSQL の IN サブクエリを LINQ to SQL に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。