2 つのデータ ソースの 結合 は、あるデータ ソース内のオブジェクトと、別のデータ ソースで共通の属性を共有するオブジェクトとの関連付けです。
結合は、相互のリレーションシップを直接フォローできないデータ ソースを対象とするクエリの重要な操作です。 オブジェクト指向プログラミングでは、これは、一方向リレーションシップの逆方向など、モデル化されていないオブジェクト間の相関関係を意味する可能性があります。 一方向リレーションシップの例として、City 型のプロパティを持つ Customer クラスがありますが、City クラスには Customer オブジェクトのコレクションであるプロパティがありません。 City オブジェクトの一覧があり、各都市のすべての顧客を検索する場合は、結合操作を使用してそれらを検索できます。
LINQ フレームワークで提供される結合メソッドは、Join と GroupJoinです。 この 2 つのメソッドは、等結合 (キーが等しいかどうかに基づいて 2 つのデータ ソースを対応させる結合) を実行します。 (比較のために、Transact-SQL では、'equals' 以外の結合演算子 (例: 'less than' 演算子) がサポートされます)。リレーショナル データベースの用語では、 Join は内部結合を実装します。これは、他のデータ セットに一致するオブジェクトのみが返される結合の種類です。 リレーショナル データベース用語で GroupJoin メソッドに直接相当するものはありませんが、このメソッドは内部結合と左外部結合のスーパーセットを実装します。 左外部結合は、最初の (左) データ ソースの各要素を返す結合です。他のデータ ソースに相関する要素がない場合でも、その要素が返されます。
次の図は、2 つのセットと、内部結合または左外部結合に含まれるセット内の要素の概念図を示しています。
メソッド
メソッド名 | 説明 | Visual Basic のクエリ式の構文 | 詳細情報 |
---|---|---|---|
参加する | キー セレクター関数に基づいて 2 つのシーケンスを結合し、値のペアを抽出します。 | From x In …, y In … Where x.a = y.a -又は- Join … [As …]In … On … |
Enumerable.Join Queryable.Join |
グループに参加 | キー セレクター関数に基づいて 2 つのシーケンスを結合し、各要素について結果として得られる一致をグループ化します。 | Group Join … In … On … |
Enumerable.GroupJoin Queryable.GroupJoin |
こちらも参照ください
.NET