ホームページ >データベース >mysql チュートリアル >SQL の IN サブクエリを LINQ to SQL に変換するにはどうすればよいですか?

SQL の IN サブクエリを LINQ to SQL に変換するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-28 18:39:14456ブラウズ

How to Translate SQL's IN Subqueries into 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。