Ler em inglês

Compartilhar via


Enumerable.Join Método

Definição

Correlaciona os elementos de duas sequências com base em chaves de correspondência.

Sobrecargas

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

Correlaciona os elementos de duas sequências com base em chaves de correspondência. O comparador de igualdade padrão é usado para comparar chaves.

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

Correlaciona os elementos de duas sequências com base em chaves de correspondência. Um IEqualityComparer<T> especificado é usado para comparar chaves.

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

Origem:
Join.cs
Origem:
Join.cs
Origem:
Join.cs

Correlaciona os elementos de duas sequências com base em chaves de correspondência. O comparador de igualdade padrão é usado para comparar chaves.

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

Parâmetros de tipo

TOuter

O tipo dos elementos da primeira sequência.

TInner

O tipo dos elementos da segunda sequência.

TKey

O tipo das chaves retornadas pelas funções de seletor de chave.

TResult

O tipo dos elementos de resultado.

Parâmetros

outer
IEnumerable<TOuter>

A primeira sequência a ser ingressada.

inner
IEnumerable<TInner>

A sequência a ser ingressada à primeira sequência.

outerKeySelector
Func<TOuter,TKey>

Uma função para extrair a chave de junção de cada elemento da primeira sequência.

innerKeySelector
Func<TInner,TKey>

Uma função para extrair a chave de junção de cada elemento da segunda sequência.

resultSelector
Func<TOuter,TInner,TResult>

Uma função para criar um elemento de resultado de dois elementos correspondentes.

Retornos

IEnumerable<TResult>

Um IEnumerable<T> com elementos do tipo TResult obtidos pela execução de uma junção interna em duas sequências.

Exceções

outer ou inner ou outerKeySelector ou innerKeySelector ou resultSelector é null.

Exemplos

O exemplo de código a seguir demonstra como usar Join<TOuter,TInner,TKey,TResult>(IEnumerable<TOuter>, IEnumerable<TInner>, Func<TOuter,TKey>, Func<TInner,TKey>, Func<TOuter,TInner,TResult>) para executar uma junção interna de duas sequências com base em uma chave comum.

C#
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
*/

Comentários

Esse método é implementado usando a execução adiada. O valor retornado imediato é um objeto que armazena todas as informações necessárias para executar a ação. A consulta representada por esse método não é executada até que o objeto seja enumerado chamando seu GetEnumerator método diretamente ou usando foreach em C# ou For Each no Visual Basic.

O comparador de igualdade padrão, Default, é usado para hash e para comparar chaves.

Uma junção refere-se à operação de correlacionar os elementos de duas fontes de informações com base em uma chave comum. Join traz as duas fontes de informação e as chaves pelas quais elas são correspondidas em uma chamada de método. Isso difere do uso de , que requer mais de SelectManyuma chamada de método para executar a mesma operação.

Join preserva a ordem dos elementos de outere para cada um desses elementos, a ordem dos elementos correspondentes de inner.

Na sintaxe da expressão de consulta, uma join cláusula (C#) ou Join (Visual Basic) é convertida em uma invocação de Join.

Em termos de banco de dados relacional, o Join método implementa um equijoin interno. 'Inner' significa que apenas os elementos que têm uma correspondência na outra sequência são incluídos nos resultados. Um 'equijoin' é uma junção na qual as chaves são comparadas quanto à igualdade. Uma operação de junção externa à esquerda não tem nenhum operador de consulta padrão dedicado, mas pode ser executada usando o GroupJoin método . Para obter mais informações, consulte Operações de junção.

Confira também

Aplica-se a

.NET 9 e outras versões
Produto Versões
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

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

Origem:
Join.cs
Origem:
Join.cs
Origem:
Join.cs

Correlaciona os elementos de duas sequências com base em chaves de correspondência. Um IEqualityComparer<T> especificado é usado para comparar chaves.

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

Parâmetros de tipo

TOuter

O tipo dos elementos da primeira sequência.

TInner

O tipo dos elementos da segunda sequência.

TKey

O tipo das chaves retornadas pelas funções de seletor de chave.

TResult

O tipo dos elementos de resultado.

Parâmetros

outer
IEnumerable<TOuter>

A primeira sequência a ser ingressada.

inner
IEnumerable<TInner>

A sequência a ser ingressada à primeira sequência.

outerKeySelector
Func<TOuter,TKey>

Uma função para extrair a chave de junção de cada elemento da primeira sequência.

innerKeySelector
Func<TInner,TKey>

Uma função para extrair a chave de junção de cada elemento da segunda sequência.

resultSelector
Func<TOuter,TInner,TResult>

Uma função para criar um elemento de resultado de dois elementos correspondentes.

comparer
IEqualityComparer<TKey>

Um IEqualityComparer<T> para executar hash e comparar chaves.

Retornos

IEnumerable<TResult>

Um IEnumerable<T> com elementos do tipo TResult obtidos pela execução de uma junção interna em duas sequências.

Exceções

outer ou inner ou outerKeySelector ou innerKeySelector ou resultSelector é null.

Comentários

Esse método é implementado usando a execução adiada. O valor retornado imediato é um objeto que armazena todas as informações necessárias para executar a ação. A consulta representada por esse método não é executada até que o objeto seja enumerado chamando seu GetEnumerator método diretamente ou usando foreach em C# ou For Each no Visual Basic.

Se comparer for null, o comparador de igualdade padrão, Default, será usado para hash e comparar chaves.

Uma junção refere-se à operação de correlacionar os elementos de duas fontes de informações com base em uma chave comum. Join traz as duas fontes de informação e as chaves pelas quais elas são correspondidas em uma chamada de método. Isso difere do uso de , que requer mais de SelectManyuma chamada de método para executar a mesma operação.

Join preserva a ordem dos elementos de outere para cada um desses elementos, a ordem dos elementos correspondentes de inner.

Em termos de banco de dados relacional, o Join método implementa um equijoin interno. 'Inner' significa que apenas os elementos que têm uma correspondência na outra sequência são incluídos nos resultados. Um 'equijoin' é uma junção na qual as chaves são comparadas quanto à igualdade. Uma operação de junção externa à esquerda não tem nenhum operador de consulta padrão dedicado, mas pode ser executada usando o GroupJoin método . Para obter mais informações, consulte Operações de junção.

Confira também

Aplica-se a

.NET 9 e outras versões
Produto Versões
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0