Enumerable.Join Enumerable.Join Enumerable.Join Enumerable.Join Method

Definición

Establece la correlación de dos secuencias basándose en claves coincidentes.Correlates the elements of two sequences based on matching keys.

Sobrecargas

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

Establece la correlación de dos secuencias basándose en claves coincidentes.Correlates the elements of two sequences based on matching keys. El comparador de igualdad predeterminado se usa para comparar claves.The default equality comparer is used to compare keys.

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

Establece la correlación de dos secuencias basándose en claves coincidentes.Correlates the elements of two sequences based on matching keys. Se usa un IEqualityComparer<T> especificado para comparar claves.A specified IEqualityComparer<T> is used to compare keys.

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

Establece la correlación de dos secuencias basándose en claves coincidentes.Correlates the elements of two sequences based on matching keys. El comparador de igualdad predeterminado se usa para comparar claves.The default equality comparer is used to compare keys.

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)

Parámetros de tipo

TOuter

Tipo de los elementos de la primera secuencia.The type of the elements of the first sequence.

TInner

Tipo de los elementos de la segunda secuencia.The type of the elements of the second sequence.

TKey

Tipo de las claves devueltas por las funciones del selector de claves.The type of the keys returned by the key selector functions.

TResult

Tipo de los elementos del resultado.The type of the result elements.

Parámetros

outer
IEnumerable<TOuter>

Primera secuencia que se va a combinar.The first sequence to join.

inner
IEnumerable<TInner>

Secuencia que se va a combinar con la primera secuencia.The sequence to join to the first sequence.

outerKeySelector
Func<TOuter,TKey>

Función para extraer la clave de combinación a partir de cada elemento de la primera secuencia.A function to extract the join key from each element of the first sequence.

innerKeySelector
Func<TInner,TKey>

Función para extraer la clave de combinación a partir de cada elemento de la segunda secuencia.A function to extract the join key from each element of the second sequence.

resultSelector
Func<TOuter,TInner,TResult>

Función que va a crear un elemento de resultado a partir de dos elementos coincidentes.A function to create a result element from two matching elements.

Devoluciones

IEnumerable<TResult>

Una interfaz IEnumerable<T> que tiene elementos de tipo TResult que se obtienen al realizar una combinación interna de dos secuencias.An IEnumerable<T> that has elements of type TResult that are obtained by performing an inner join on two sequences.

Excepciones

outer o inner o outerKeySelector o innerKeySelector o resultSelector es null.outer or inner or outerKeySelector or innerKeySelector or resultSelector is null.

Ejemplos

En el ejemplo de código siguiente se muestra cómo usar Join<TOuter,TInner,TKey,TResult>(IEnumerable<TOuter>, IEnumerable<TInner>, Func<TOuter,TKey>, Func<TInner,TKey>, Func<TOuter,TInner,TResult>) para realizar una combinación interna de dos secuencias basándose en una clave común.The following code example demonstrates how to use Join<TOuter,TInner,TKey,TResult>(IEnumerable<TOuter>, IEnumerable<TInner>, Func<TOuter,TKey>, Func<TInner,TKey>, Func<TOuter,TInner,TResult>) to perform an inner join of two sequences based on a common key.

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.
    MsgBox(output.ToString)
End Sub

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

Comentarios

Este método se implementa mediante la ejecución aplazada.This method is implemented by using deferred execution. El valor devuelto inmediato es un objeto que almacena toda la información necesaria para realizar la acción.The immediate return value is an object that stores all the information that is required to perform the action. La consulta representada por este método no se ejecuta hasta que se enumera el objeto llamando a su GetEnumerator método directamente o mediante foreach en Visual C# o For Each en Visual Basic.The query represented by this method is not executed until the object is enumerated either by calling its GetEnumerator method directly or by using foreach in Visual C# or For Each in Visual Basic.

El comparador de igualdad predeterminado Default, se usa para el valor hash y comparar las claves.The default equality comparer, Default, is used to hash and compare keys.

Una combinación hace referencia a la operación de correlacionar los elementos de dos orígenes de información basada en una clave común.A join refers to the operation of correlating the elements of two sources of information based on a common key. Join aporta las dos fuentes de información y las claves que se asocian entre sí en una llamada al método.Join brings the two information sources and the keys by which they are matched together in one method call. Esto difiere del uso de SelectMany, lo que requiere más de una llamada de método para realizar la misma operación.This differs from the use of SelectMany, which requires more than one method call to perform the same operation.

Join conserva el orden de los elementos de outery para cada uno de estos elementos, el orden de los elementos coincidentes de inner.Join preserves the order of the elements of outer, and for each of these elements, the order of the matching elements of inner.

En la sintaxis de expresión de consulta, un join (Visual C#) o Join cláusula (Visual Basic) se convierte en una invocación de Join.In query expression syntax, a join (Visual C#) or Join (Visual Basic) clause translates to an invocation of Join.

En términos de la base de datos relacional, la Join método implementa una combinación de igualdad interna.In relational database terms, the Join method implements an inner equijoin. 'Interna' significa que solo los elementos que tienen una correspondencia en otra secuencia se incluyen en los resultados.'Inner' means that only elements that have a match in the other sequence are included in the results. Una "combinación de igualdad ' es una combinación en la que las claves se comparan la igualdad.An 'equijoin' is a join in which the keys are compared for equality. No deja la operación de combinación externa tiene ningún operador de consulta estándar dedicado, pero puede realizarse mediante el GroupJoin método.A left outer join operation has no dedicated standard query operator, but can be performed by using the GroupJoin method. Consulte operaciones de combinación.See Join Operations.

Consulte también:

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

Establece la correlación de dos secuencias basándose en claves coincidentes.Correlates the elements of two sequences based on matching keys. Se usa un IEqualityComparer<T> especificado para comparar claves.A specified IEqualityComparer<T> is used to compare keys.

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);
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)

Parámetros de tipo

TOuter

Tipo de los elementos de la primera secuencia.The type of the elements of the first sequence.

TInner

Tipo de los elementos de la segunda secuencia.The type of the elements of the second sequence.

TKey

Tipo de las claves devueltas por las funciones del selector de claves.The type of the keys returned by the key selector functions.

TResult

Tipo de los elementos del resultado.The type of the result elements.

Parámetros

outer
IEnumerable<TOuter>

Primera secuencia que se va a combinar.The first sequence to join.

inner
IEnumerable<TInner>

Secuencia que se va a combinar con la primera secuencia.The sequence to join to the first sequence.

outerKeySelector
Func<TOuter,TKey>

Función para extraer la clave de combinación a partir de cada elemento de la primera secuencia.A function to extract the join key from each element of the first sequence.

innerKeySelector
Func<TInner,TKey>

Función para extraer la clave de combinación a partir de cada elemento de la segunda secuencia.A function to extract the join key from each element of the second sequence.

resultSelector
Func<TOuter,TInner,TResult>

Función que va a crear un elemento de resultado a partir de dos elementos coincidentes.A function to create a result element from two matching elements.

comparer
IEqualityComparer<TKey>

IEqualityComparer<T> que va a aplicar un algoritmo hash y a comparar las claves.An IEqualityComparer<T> to hash and compare keys.

Devoluciones

IEnumerable<TResult>

Una interfaz IEnumerable<T> que tiene elementos de tipo TResult que se obtienen al realizar una combinación interna de dos secuencias.An IEnumerable<T> that has elements of type TResult that are obtained by performing an inner join on two sequences.

Excepciones

outer o inner o outerKeySelector o innerKeySelector o resultSelector es null.outer or inner or outerKeySelector or innerKeySelector or resultSelector is null.

Comentarios

Este método se implementa mediante la ejecución aplazada.This method is implemented by using deferred execution. El valor devuelto inmediato es un objeto que almacena toda la información necesaria para realizar la acción.The immediate return value is an object that stores all the information that is required to perform the action. La consulta representada por este método no se ejecuta hasta que se enumera el objeto llamando a su GetEnumerator método directamente o mediante foreach en Visual C# o For Each en Visual Basic.The query represented by this method is not executed until the object is enumerated either by calling its GetEnumerator method directly or by using foreach in Visual C# or For Each in Visual Basic.

Si comparer es null, el comparador de igualdad predeterminado Default, se usa para el valor hash y comparar las claves.If comparer is null, the default equality comparer, Default, is used to hash and compare keys.

Una combinación hace referencia a la operación de correlacionar los elementos de dos orígenes de información basada en una clave común.A join refers to the operation of correlating the elements of two sources of information based on a common key. Join aporta las dos fuentes de información y las claves que se asocian entre sí en una llamada al método.Join brings the two information sources and the keys by which they are matched together in one method call. Esto difiere del uso de SelectMany, lo que requiere más de una llamada de método para realizar la misma operación.This differs from the use of SelectMany, which requires more than one method call to perform the same operation.

Join conserva el orden de los elementos de outery para cada uno de estos elementos, el orden de los elementos coincidentes de inner.Join preserves the order of the elements of outer, and for each of these elements, the order of the matching elements of inner.

En términos de la base de datos relacional, la Join método implementa una combinación de igualdad interna.In relational database terms, the Join method implements an inner equijoin. 'Interna' significa que solo los elementos que tienen una correspondencia en otra secuencia se incluyen en los resultados.'Inner' means that only elements that have a match in the other sequence are included in the results. Una "combinación de igualdad ' es una combinación en la que las claves se comparan la igualdad.An 'equijoin' is a join in which the keys are compared for equality. No deja la operación de combinación externa tiene ningún operador de consulta estándar dedicado, pero puede realizarse mediante el GroupJoin método.A left outer join operation has no dedicated standard query operator, but can be performed by using the GroupJoin method. Consulte operaciones de combinación.See Join Operations.

Consulte también:

Se aplica a