この記事は機械翻訳されています。英語版の記事を表示するには、[英語] のチェック ボックスをオンにしてください。また、テキストにマウス ポインターを合わせると、ポップアップ ウィンドウに英語のテキストを表示することもできます。
翻訳
英語

Enumerable.Join<TOuter, TInner, TKey, TResult> メソッド (IEnumerable<TOuter>, IEnumerable<TInner>, Func<TOuter, TKey>, Func<TInner, TKey>, Func<TOuter, TInner, TResult>)

 

一致するキーに基づいて 2 つのシーケンスの要素を基準になります。 キーの比較には既定の等値比較子が使用されます。

名前空間:   System.Linq
アセンブリ:  System.Core (System.Core.dll 内)

public static IEnumerable<TResult> Join<TOuter, TInner, TKey, TResult>(
	this IEnumerable<TOuter> outer,
	IEnumerable<TInner> inner,
	Func<TOuter, TKey> outerKeySelector,
	Func<TInner, TKey> innerKeySelector,
	Func<TOuter, TInner, TResult> resultSelector
)

パラメーター

outer
Type: System.Collections.Generic.IEnumerable<TOuter>

結合する最初のシーケンス。

inner
Type: System.Collections.Generic.IEnumerable<TInner>

最初のシーケンスに結合するシーケンス。

outerKeySelector
Type: System.Func<TOuter, TKey>

最初のシーケンスの各要素から結合キーを抽出する関数。

innerKeySelector
Type: System.Func<TInner, TKey>

2 番目のシーケンスの各要素から結合キーを抽出する関数。

resultSelector
Type: System.Func<TOuter, TInner, TResult>

一致する 2 つの要素から結果の要素を作成する関数。

戻り値

Type: System.Collections.Generic.IEnumerable<TResult>

IEnumerable<T> 型の要素を持つ TResult 2 つのシーケンスに対して内部結合を実行することによって取得されます。

型パラメーター

TOuter

最初のシーケンスの要素の型。

TInner

2 番目のシーケンスの要素の型。

TKey

キー セレクター関数によって返されるキーの型。

TResult

結果の要素の型。

Exception Condition
ArgumentNullException

outer または inner または outerKeySelector または innerKeySelector または resultSelectornullです。

このメソッドは遅延実行を使用して実装されます。 すぐに、値は、操作を実行するために必要なすべての情報を格納するオブジェクトを返します。 オブジェクトのいずれかを呼び出すことが列挙されるまで、このメソッドで表されるクエリは実行されません、 GetEnumerator メソッドを使用して直接または foreach で Visual C# または For Each で Visual Basicします。

既定の等値比較子 Default, 、ハッシュし、キーを比較するために使用します。

結合は、共通のキーに基づいた情報の 2 つのソースの要素を関連付ける操作を参照します。 Join<TOuter, TInner, TKey, TResult> 2 つの情報源と、1 つのメソッドの呼び出しでまとめて照合されますキーが表示されます。 これに対しを使用して SelectMany, 、1 つ以上のメソッド呼び出し、同じ操作を実行する必要があります。

Join<TOuter, TInner, TKey, TResult> 要素の順序を維持 outer, 、およびこれらの要素の一致する要素の順序は、各 innerします。

クエリ式の構文で、 join (Visual C#) または Join (Visual Basic) の呼び出しに変換される句 Join<TOuter, TInner, TKey, TResult>します。

リレーショナル データベース用語で、 Join<TOuter, TInner, TKey, TResult> メソッドは内部の等結合を実装します。 「内部」は、他のシーケンスに一致する要素のみが結果に含まれることを意味します。 "等結合 ' 結合は、等しいかどうか比較されるキーにします。 左外部結合操作は専用標準クエリ演算子でしか使用して実行を持たない、 GroupJoin<TOuter, TInner, TKey, TResult> メソッドです。Join Operations」を参照してください。

次のコード例では、使用して Join<TOuter, TInner, TKey, TResult>(IEnumerable<TOuter>, IEnumerable<TInner>, Func<TOuter, TKey>, Func<TInner, TKey>, Func<TOuter, TInner, TResult>) を共通のキーに基づいて 2 つのシーケンスの内部結合を実行します。

class Person
{
    public string Name { get; set; }
}

class Pet
{
    public string Name { get; set; }
    public Person Owner { get; set; }
}

public static void JoinEx1()
{
    Person magnus = new Person { Name = "Hedlund, Magnus" };
    Person terry = new Person { Name = "Adams, Terry" };
    Person charlotte = new Person { Name = "Weiss, Charlotte" };

    Pet barley = new Pet { Name = "Barley", Owner = terry };
    Pet boots = new Pet { Name = "Boots", Owner = terry };
    Pet whiskers = new Pet { Name = "Whiskers", Owner = charlotte };
    Pet daisy = new Pet { Name = "Daisy", Owner = magnus };

    List<Person> people = new List<Person> { magnus, terry, charlotte };
    List<Pet> pets = new List<Pet> { barley, boots, whiskers, daisy };

    // Create a list of Person-Pet pairs where 
    // each element is an anonymous type that contains a
    // Pet's name and the name of the Person that owns the Pet.
    var query =
        people.Join(pets,
                    person => person,
                    pet => pet.Owner,
                    (person, pet) =>
                        new { OwnerName = person.Name, Pet = pet.Name });

    foreach (var obj in query)
    {
        Console.WriteLine(
            "{0} - {1}",
            obj.OwnerName,
            obj.Pet);
    }
}

/*
 This code produces the following output:

 Hedlund, Magnus - Daisy
 Adams, Terry - Barley
 Adams, Terry - Boots
 Weiss, Charlotte - Whiskers
*/

Universal Windows Platform
8 から利用可能
.NET Framework
3.5 から利用可能
Portable Class Library
サポート対象 : portable .NET platforms
Silverlight
2.0 から利用可能
Windows Phone Silverlight
7.0 から利用可能
Windows Phone
8.1 から利用可能
トップに戻る
表示: