Enumerable.Join Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Eşleşen anahtarlara göre iki dizinin öğelerini ilişkilendirir.
Aşırı Yüklemeler
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. Varsayılan eşitlik karşılaştırıcısı 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>, 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
Eşleşen anahtarlara göre iki dizinin öğelerini ilişkilendirir. Varsayılan eşitlik karşılaştırıcısı 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);
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ılmak için sıra.
- 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<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
ya da resultSelector
şeklindedir null
.
Örnekler
Aşağıdaki kod örneği, ortak bir anahtara dayalı olarak iki dizinin iç birleşimini gerçekleştirmek için nasıl kullanılacağını Join<TOuter,TInner,TKey,TResult>(IEnumerable<TOuter>, IEnumerable<TInner>, Func<TOuter,TKey>, Func<TInner,TKey>, Func<TOuter,TInner,TResult>) gösterir.
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 ertelenmiş 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, doğrudan yöntemini çağırarak GetEnumerator
veya C# içinde veya For Each
Visual Basic'te kullanarak foreach
nesne 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 birlikte 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 SelectMany
farklıdır.
Join öğesinin öğelerinin outer
sırasını ve bu öğelerin her biri için öğesinin eşleşen öğelerinin inner
sırasını korur.
Sorgu ifadesi söz diziminde bir join
(C#) veya Join
(Visual Basic) yan tümcesi çağrısına Joindönüşür.
İlişkisel veritabanı terimlerinde yöntemi bir Join 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ığı 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.
- Birleştirme işlemleri (C#)
- Birleştirme işlemleri (Visual Basic)
- join tümcesi (C# Başvurusu)
- Join Tümcesi (Visual Basic)
Ş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
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ılmak için sıra.
- 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>
Karma anahtarlar ve karşılaştırmak için bir IEqualityComparer<T> .
Döndürülenler
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
ya da resultSelector
şeklindedir null
.
Açıklamalar
Bu yöntem ertelenmiş 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, doğrudan yöntemini çağırarak GetEnumerator
veya C# içinde veya For Each
Visual Basic'te kullanarak foreach
nesne numaralandırılana kadar yürütülür.
ise comparer
null
, anahtarları karma ve karşılaştırmak için varsayılan eşitlik karşılaştırıcısı Defaultkullanı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 birlikte 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 SelectMany
farklıdır.
Join öğesinin öğelerinin outer
sırasını ve bu öğelerin her biri için öğesinin eşleşen öğelerinin inner
sırasını korur.
İlişkisel veritabanı terimlerinde yöntemi bir Join 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ığı 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.