結合演算

2 つのデータ ソースの結合とは、あるデータ ソースのオブジェクトを、共通の属性を共有する別のデータ ソースのオブジェクトと関連付けることです。

相互に直接の関連がない 2 つのデータ ソースを対象とするクエリにおいて、結合は重要な操作になります。 オブジェクト指向プログラミングでは、これは一方向の関係における逆の方向など、モデル化されていないオブジェクト間の相関関係を意味する場合があります。 一方向の関係の例として、City 型のプロパティを持つ Customer クラスがあるとします。ただし、City クラスには、Customer オブジェクトのコレクションを表すプロパティはありません。 City オブジェクトのリストから各都市のすべての顧客を取得する場合は、結合演算を使用して顧客を検索できます。

LINQ フレームワークに用意されている結合メソッドは、Join および GroupJoin です。この 2 つのメソッドは、等結合 (キーが等しいかどうかに基づいて 2 つのデータ ソースを対応させる結合) を実行します (比較に関して、Transact-SQL では、"小なり" 演算子などの "等値" 以外の結合演算子もサポートされます)。 リレーショナル データベース用語で説明すると、Join は内部結合 (両方のデータ セットで一致するオブジェクトだけが返される結合) を実装します。 リレーショナル データベース用語で GroupJoin メソッドに直接相当するものはありませんが、これは内部結合と左外部結合のスーパーセットを実装します。左外部結合とは、最初 (左側) のデータ ソースの各要素を返す結合です。これらの要素は、もう一方のデータ ソースに相関関係を持つ要素がなくても返されます。

次の図は、2 つのセットと、内部結合または左外部結合としてこれらのセットに含まれている要素の概念図を示しています。

内側/外側を示す 2 つの重なり合う円。

メソッド

メソッド名

説明

C# のクエリ式の構文

Visual Basic のクエリ式の構文

詳細情報

Join

キー セレクター関数に基づいて 2 つのシーケンスを結合し、値のペアを抽出します。

join … in … on … equals …

From x In …, y In … Where x.a = y.a

または

Join … [As …]In … On …

Enumerable.Join

Queryable.Join

GroupJoin

キー セレクター関数に基づいて 2 つのシーケンスを結合し、各要素について結果として得られる一致をグループ化します。

join … in … on … equals … into …

Group Join … In … On …

Enumerable.GroupJoin

Queryable.GroupJoin

参照

処理手順

方法 : 結合およびクロス積クエリを作成する (LINQ to SQL)

方法 : 複合キーを使用して結合する (C# プログラミング ガイド)

方法 : 異種ファイルのコンテンツを結合する (LINQ)

方法 : join 句の結果の順序を指定する (C# プログラミング ガイド)

方法 : カスタム結合操作を実行する (C# プログラミング ガイド)

方法 : グループ化結合を実行する (C# プログラミング ガイド)

方法 : 内部結合を実行する (C# プログラミング ガイド)

方法 : 左外部結合を実行する (C# プログラミング ガイド)

方法: 複数のソースからオブジェクト コレクションにデータを設定する (LINQ)

参照

System.Linq

匿名型 (C# プログラミング ガイド)

join 句 (C# リファレンス)

Join 句 (Visual Basic)

概念

標準クエリ演算子の概要

匿名型 (Visual Basic)

結合の種類