結合演算
更新 : 2007 年 11 月
2 つのデータ ソースの結合とは、あるデータ ソースのオブジェクトを、共通の属性を共有する別のデータ ソースのオブジェクトと関連付けることです。
相互に直接の関連がない 2 つのデータ ソースを対象とするクエリにおいて、結合は重要な操作になります。オブジェクト指向プログラミングでは、これは一方向の関係における逆の方向など、モデル化されていないオブジェクト間の相関関係を意味する場合があります。一方向の関係の例として、City 型のプロパティを持つ Customer クラスがあるとします。ただし、City クラスには、Customer オブジェクトのコレクションを表すプロパティはありません。City オブジェクトのリストから各都市のすべての顧客を取得する場合は、結合演算を使用して顧客を検索できます。
LINQ フレームワークに用意されている結合メソッドは、Join および GroupJoin です。この 2 つのメソッドは、等結合 (キーが等しいかどうかに基づいて 2 つのデータ ソースを対応させる結合) を実行します (比較に関して、Transact-SQL では、"小なり" 演算子などの "等値" 以外の結合演算子もサポートされます)。リレーショナル データベース用語で説明すると、Join は内部結合 (両方のデータ セットで一致するオブジェクトだけが返される結合) を実装します。GroupJoin メソッドは、リレーショナル データベース用語で直接相当するものはありませんが、内部結合と左外部結合のスーパーセットを実装します。左外部結合とは、最初 (左側) のデータ ソースの各要素を返す結合です。これらの要素は、もう一方のデータ ソースに相関関係を持つ要素がなくても返されます。
次の図は、2 つのセットと、内部結合または左外部結合としてこれらのセットに含まれている要素の概念図を示しています。
メソッド
メソッド名 |
説明 |
C# のクエリ式の構文 |
Visual Basic のクエリ式の構文 |
詳細情報 |
---|---|---|---|---|
Join |
キー セレクタ関数に基づいて 2 つのシーケンスを結合し、値のペアを抽出します。 |
join … in … on … equals … |
From x In …, y In … Where x.a = b.a または Join … [As …]In … On … |
|
GroupJoin |
キー セレクタ関数に基づいて 2 つのシーケンスを結合し、各要素について結果として得られる一致をグループ化します。 |
join … in … on … equals … into … |
Group Join … In … On … |
結合演算の実行方法に関する詳細情報
参照
処理手順
方法 : 結合およびクロス積クエリを作成する (LINQ to SQL)