Enumerable.Join Yöntem

Tanım

eşleşen anahtarlara göre iki dizinin öğelerini ilişkilendirir.

Aşırı Yüklemeler

Name Description
Join<TOuter,TInner,TKey,TResult>(IEnumerable<TOuter>, IEnumerable<TInner>, Func<TOuter,TKey>, Func<TInner,TKey>, Func<TOuter,TInner,TResult>)

eşleşen anahtarlara göre iki dizinin öğelerini ilişkilendirir. Anahtarları karşılaştırmak için varsayılan eşitlik karşılaştırıcısı kullanılır.

Join<TOuter,TInner,TKey,TResult>(IEnumerable<TOuter>, IEnumerable<TInner>, Func<TOuter,TKey>, Func<TInner,TKey>, Func<TOuter,TInner,TResult>, IEqualityComparer<TKey>)

eşleşen anahtarlara göre iki dizinin öğelerini ilişkilendirir. Belirtilen IEqualityComparer<T> , anahtarları karşılaştırmak için kullanılır.

Join<TOuter,TInner,TKey,TResult>(IEnumerable<TOuter>, IEnumerable<TInner>, Func<TOuter,TKey>, Func<TInner,TKey>, Func<TOuter,TInner,TResult>)

Kaynak:
Join.cs
Kaynak:
Join.cs
Kaynak:
Join.cs
Kaynak:
Join.cs
Kaynak:
Join.cs

eşleşen anahtarlara göre iki dizinin öğelerini ilişkilendirir. Anahtarları karşılaştırmak için varsayılan eşitlik karşılaştırıcısı kullanılır.

public:
generic <typename TOuter, typename TInner, typename TKey, typename TResult>
[System::Runtime::CompilerServices::Extension]
 static System::Collections::Generic::IEnumerable<TResult> ^ Join(System::Collections::Generic::IEnumerable<TOuter> ^ outer, System::Collections::Generic::IEnumerable<TInner> ^ inner, Func<TOuter, TKey> ^ outerKeySelector, Func<TInner, TKey> ^ innerKeySelector, Func<TOuter, TInner, TResult> ^ resultSelector);
public static System.Collections.Generic.IEnumerable<TResult> Join<TOuter,TInner,TKey,TResult>(this System.Collections.Generic.IEnumerable<TOuter> outer, System.Collections.Generic.IEnumerable<TInner> inner, Func<TOuter,TKey> outerKeySelector, Func<TInner,TKey> innerKeySelector, Func<TOuter,TInner,TResult> resultSelector);
static member Join : seq<'Outer> * seq<'Inner> * Func<'Outer, 'Key> * Func<'Inner, 'Key> * Func<'Outer, 'Inner, 'Result> -> seq<'Result>
<Extension()>
Public Function Join(Of TOuter, TInner, TKey, TResult) (outer As IEnumerable(Of TOuter), inner As IEnumerable(Of TInner), outerKeySelector As Func(Of TOuter, TKey), innerKeySelector As Func(Of TInner, TKey), resultSelector As Func(Of TOuter, TInner, TResult)) As IEnumerable(Of TResult)

Tür Parametreleri

TOuter

İlk dizinin öğelerinin türü.

TInner

İkinci dizinin öğelerinin türü.

TKey

Anahtar seçici işlevleri tarafından döndürülen anahtarların türü.

TResult

Sonuç öğelerinin türü.

Parametreler

outer
IEnumerable<TOuter>

Birleştirecek ilk sıra.

inner
IEnumerable<TInner>

İlk diziye katılma sırası.

outerKeySelector
Func<TOuter,TKey>

İlk dizinin her öğesinden birleştirme anahtarını ayıklamak için bir işlev.

innerKeySelector
Func<TInner,TKey>

İkinci dizinin her öğesinden birleştirme anahtarını ayıklamak için bir işlev.

resultSelector
Func<TOuter,TInner,TResult>

eşleşen iki öğeden sonuç öğesi oluşturmak için bir işlev.

Döndürülenler

IEnumerable<TResult>

IEnumerable<T> İki dizide iç birleşim gerçekleştirerek elde edilen tür TResult öğelerine sahip olan.

Özel durumlar

outer veya inner veya outerKeySelector veya innerKeySelector veya resultSelector şeklindedir null.

Örnekler

Aşağıdaki kod örneğinde, ortak bir anahtara dayalı olarak iki dizinin iç birleşimini gerçekleştirmek için Join<TOuter,TInner,TKey,TResult>(IEnumerable<TOuter>, IEnumerable<TInner>, Func<TOuter,TKey>, Func<TInner,TKey>, Func<TOuter,TInner,TResult>) nasıl kullanılacağı gösterilmektedir.

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
*/
Structure Person
    Public Name As String
End Structure

Structure Pet
    Public Name As String
    Public Owner As Person
End Structure

Sub JoinEx1()
    Dim magnus As New Person With {.Name = "Hedlund, Magnus"}
    Dim terry As New Person With {.Name = "Adams, Terry"}
    Dim charlotte As New Person With {.Name = "Weiss, Charlotte"}

    Dim barley As New Pet With {.Name = "Barley", .Owner = terry}
    Dim boots As New Pet With {.Name = "Boots", .Owner = terry}
    Dim whiskers As New Pet With {.Name = "Whiskers", .Owner = charlotte}
    Dim daisy As New Pet With {.Name = "Daisy", .Owner = magnus}

    Dim people As New List(Of Person)(New Person() {magnus, terry, charlotte})
    Dim pets As New List(Of Pet)(New 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.
    Dim query =
people.Join(pets,
            Function(person) person,
            Function(pet) pet.Owner,
            Function(person, pet) _
                New With {.OwnerName = person.Name, .Pet = pet.Name})

    Dim output As New System.Text.StringBuilder
    For Each obj In query
        output.AppendLine(obj.OwnerName & " - " & obj.Pet)
    Next

    ' Display the output.
    Console.WriteLine(output.ToString)
End Sub

' This code produces the following output:
'
' Hedlund, Magnus - Daisy
' Adams, Terry - Barley
' Adams, Terry - Boots
' Weiss, Charlotte - Whiskers

Açıklamalar

Bu yöntem ertelenen yürütme kullanılarak uygulanır. Hemen dönüş değeri, eylemi gerçekleştirmek için gereken tüm bilgileri depolayan bir nesnedir. Bu yöntemle temsil edilen sorgu, nesne doğrudan GetEnumerator yöntemini çağırarak veya C# içinde foreach veya Visual Basic'de For Each kullanılarak numaralandırılana kadar yürütülür.

Varsayılan eşitlik karşılaştırıcısı olan Default, anahtarları karma ve karşılaştırmak için kullanılır.

Birleştirme, ortak bir anahtara dayalı olarak iki bilgi kaynağının öğelerini ilişkilendirme işlemini ifade eder. Join iki bilgi kaynağını ve bunların bir yöntem çağrısında eşleştirildiği anahtarları getirir. Bu, aynı işlemi gerçekleştirmek için birden fazla yöntem çağrısı gerektiren kullanımından SelectManyfarklıdır.

Join öğelerinin sırasını ve bu öğelerin outerher biri için eşleşen öğelerinin innersırasını korur.

Sorgu ifadesi söz diziminde, join (C#) veya Join (Visual Basic) yan tümcesi, Join çağrısına çevrilir.

İlişkisel veritabanı terimlerinde Join yöntemi bir iç eş birleşim uygular. 'inner' yalnızca diğer dizide eşleşmesi olan öğelerin sonuçlara dahil olduğu anlamına gelir. 'Eş birleşim', anahtarların eşitlik için karşılaştırıldığı bir birleşimdir. Sol dış birleştirme işleminin ayrılmış standart sorgu işleci yoktur, ancak yöntemi kullanılarak GroupJoin gerçekleştirilebilir. Daha fazla bilgi için bkz . Birleştirme işlemleri.

Ayrıca bkz.

Şunlara uygulanır

Join<TOuter,TInner,TKey,TResult>(IEnumerable<TOuter>, IEnumerable<TInner>, Func<TOuter,TKey>, Func<TInner,TKey>, Func<TOuter,TInner,TResult>, IEqualityComparer<TKey>)

Kaynak:
Join.cs
Kaynak:
Join.cs
Kaynak:
Join.cs
Kaynak:
Join.cs
Kaynak:
Join.cs

eşleşen anahtarlara göre iki dizinin öğelerini ilişkilendirir. Belirtilen IEqualityComparer<T> , anahtarları karşılaştırmak için kullanılır.

public:
generic <typename TOuter, typename TInner, typename TKey, typename TResult>
[System::Runtime::CompilerServices::Extension]
 static System::Collections::Generic::IEnumerable<TResult> ^ Join(System::Collections::Generic::IEnumerable<TOuter> ^ outer, System::Collections::Generic::IEnumerable<TInner> ^ inner, Func<TOuter, TKey> ^ outerKeySelector, Func<TInner, TKey> ^ innerKeySelector, Func<TOuter, TInner, TResult> ^ resultSelector, System::Collections::Generic::IEqualityComparer<TKey> ^ comparer);
public static System.Collections.Generic.IEnumerable<TResult> Join<TOuter,TInner,TKey,TResult>(this System.Collections.Generic.IEnumerable<TOuter> outer, System.Collections.Generic.IEnumerable<TInner> inner, Func<TOuter,TKey> outerKeySelector, Func<TInner,TKey> innerKeySelector, Func<TOuter,TInner,TResult> resultSelector, System.Collections.Generic.IEqualityComparer<TKey> comparer);
public static System.Collections.Generic.IEnumerable<TResult> Join<TOuter,TInner,TKey,TResult>(this System.Collections.Generic.IEnumerable<TOuter> outer, System.Collections.Generic.IEnumerable<TInner> inner, Func<TOuter,TKey> outerKeySelector, Func<TInner,TKey> innerKeySelector, Func<TOuter,TInner,TResult> resultSelector, System.Collections.Generic.IEqualityComparer<TKey>? comparer);
static member Join : seq<'Outer> * seq<'Inner> * Func<'Outer, 'Key> * Func<'Inner, 'Key> * Func<'Outer, 'Inner, 'Result> * System.Collections.Generic.IEqualityComparer<'Key> -> seq<'Result>
<Extension()>
Public Function Join(Of TOuter, TInner, TKey, TResult) (outer As IEnumerable(Of TOuter), inner As IEnumerable(Of TInner), outerKeySelector As Func(Of TOuter, TKey), innerKeySelector As Func(Of TInner, TKey), resultSelector As Func(Of TOuter, TInner, TResult), comparer As IEqualityComparer(Of TKey)) As IEnumerable(Of TResult)

Tür Parametreleri

TOuter

İlk dizinin öğelerinin türü.

TInner

İkinci dizinin öğelerinin türü.

TKey

Anahtar seçici işlevleri tarafından döndürülen anahtarların türü.

TResult

Sonuç öğelerinin türü.

Parametreler

outer
IEnumerable<TOuter>

Birleştirecek ilk sıra.

inner
IEnumerable<TInner>

İlk diziye katılma sırası.

outerKeySelector
Func<TOuter,TKey>

İlk dizinin her öğesinden birleştirme anahtarını ayıklamak için bir işlev.

innerKeySelector
Func<TInner,TKey>

İkinci dizinin her öğesinden birleştirme anahtarını ayıklamak için bir işlev.

resultSelector
Func<TOuter,TInner,TResult>

eşleşen iki öğeden sonuç öğesi oluşturmak için bir işlev.

comparer
IEqualityComparer<TKey>

Anahtarları karma ve karşılaştırmaya yönelik bir IEqualityComparer<T>.

Döndürülenler

IEnumerable<TResult>

IEnumerable<T> İki dizide iç birleşim gerçekleştirerek elde edilen tür TResult öğelerine sahip olan.

Özel durumlar

outer veya inner veya outerKeySelector veya innerKeySelector veya resultSelector şeklindedir null.

Açıklamalar

Bu yöntem ertelenen yürütme kullanılarak uygulanır. Hemen dönüş değeri, eylemi gerçekleştirmek için gereken tüm bilgileri depolayan bir nesnedir. Bu yöntemle temsil edilen sorgu, nesne doğrudan GetEnumerator yöntemini çağırarak veya C# içinde foreach veya Visual Basic'de For Each kullanılarak numaralandırılana kadar yürütülür.

ise comparernull, anahtarları karma yapmak ve karşılaştırmak için varsayılan eşitlik karşılaştırıcısı Defaultolan kullanılır.

Birleştirme, ortak bir anahtara dayalı olarak iki bilgi kaynağının öğelerini ilişkilendirme işlemini ifade eder. Join iki bilgi kaynağını ve bunların bir yöntem çağrısında eşleştirildiği anahtarları getirir. Bu, aynı işlemi gerçekleştirmek için birden fazla yöntem çağrısı gerektiren kullanımından SelectManyfarklıdır.

Join öğelerinin sırasını ve bu öğelerin outerher biri için eşleşen öğelerinin innersırasını korur.

İlişkisel veritabanı terimlerinde Join yöntemi bir iç eş birleşim uygular. 'inner' yalnızca diğer dizide eşleşmesi olan öğelerin sonuçlara dahil olduğu anlamına gelir. 'Eş birleşim', anahtarların eşitlik için karşılaştırıldığı bir birleşimdir. Sol dış birleştirme işleminin ayrılmış standart sorgu işleci yoktur, ancak yöntemi kullanılarak GroupJoin gerçekleştirilebilir. Daha fazla bilgi için bkz . Birleştirme işlemleri.

Ayrıca bkz.

Şunlara uygulanır