Enumerable.UnionBy Método

Definição

Sobrecargas

Name Description
UnionBy<TSource,TKey>(IEnumerable<TSource>, IEnumerable<TSource>, Func<TSource,TKey>)

Produz a união conjunta de duas sequências de acordo com uma função seletora de teclas especificada.

UnionBy<TSource,TKey>(IEnumerable<TSource>, IEnumerable<TSource>, Func<TSource,TKey>, IEqualityComparer<TKey>)

Produz a união conjunta de duas sequências de acordo com uma função seletora de teclas especificada.

UnionBy<TSource,TKey>(IEnumerable<TSource>, IEnumerable<TSource>, Func<TSource,TKey>)

Origem:
Union.cs
Origem:
Union.cs
Origem:
Union.cs
Origem:
Union.cs
Origem:
Union.cs

Produz a união conjunta de duas sequências de acordo com uma função seletora de teclas especificada.

public:
generic <typename TSource, typename TKey>
[System::Runtime::CompilerServices::Extension]
 static System::Collections::Generic::IEnumerable<TSource> ^ UnionBy(System::Collections::Generic::IEnumerable<TSource> ^ first, System::Collections::Generic::IEnumerable<TSource> ^ second, Func<TSource, TKey> ^ keySelector);
public static System.Collections.Generic.IEnumerable<TSource> UnionBy<TSource,TKey>(this System.Collections.Generic.IEnumerable<TSource> first, System.Collections.Generic.IEnumerable<TSource> second, Func<TSource,TKey> keySelector);
static member UnionBy : seq<'Source> * seq<'Source> * Func<'Source, 'Key> -> seq<'Source>
<Extension()>
Public Function UnionBy(Of TSource, TKey) (first As IEnumerable(Of TSource), second As IEnumerable(Of TSource), keySelector As Func(Of TSource, TKey)) As IEnumerable(Of TSource)

Parâmetros de Tipo Genérico

TSource

O tipo dos elementos das sequências de entrada.

TKey

O tipo de chave para identificar elementos.

Parâmetros

first
IEnumerable<TSource>

E IEnumerable<T> cujos elementos distintos formam o primeiro conjunto para a união.

second
IEnumerable<TSource>

E IEnumerable<T> cujos elementos distintos formam o segundo conjunto para a união.

keySelector
Func<TSource,TKey>

Uma função para extrair a chave de cada elemento.

Devoluções

IEnumerable<TSource>

An IEnumerable<T> que contém os elementos de ambas as sequências de entrada, excluindo duplicados.

Exceções

first ou second é null.

Exemplos

O exemplo seguinte demonstra como usar UnionBy a fusão de duas coleções de objetos excluindo duplicados com base numa propriedade específica.

(int ProductId, string Name, decimal Price)[] localProducts =
{
    (101, "Laptop", 1000m),
    (102, "Mouse", 100m),
    (103, "Keyboard", 120m)
};

(int ProductId, string Name, decimal Price)[] warehouseProducts =
{
    (102, "Mouse", 100m),      // Duplicate ProductId (already in local)
    (104, "Monitor", 800m),
    (101, "Laptop", 1000m)     // Duplicate ProductId (already in local)
};
var combinedProducts =
    localProducts.UnionBy(
        warehouseProducts,
        product => product.ProductId
    );

foreach (var product in combinedProducts)
{
    Console.WriteLine($"{product.ProductId}: {product.Name} - ${product.Price}");
}

/*
This code produces the following output:

101: Laptop - $1000
102: Mouse - $100
103: Keyboard - $120
104: Monitor - $800
*/

Observações

Este método é implementado através da execução diferida. O valor de retorno imediato é um objeto que armazena toda a informação necessária para realizar a ação. A consulta representada por este método não é executada até que o objeto seja enumerado, seja chamando diretamente o seu método GetEnumerator ou usando foreach em C# ou For Each em Visual Basic.

O comparador de igualdade por defeito, Default, é usado para comparar valores.

Quando o objeto devolvido por este método é enumerado, UnionBy enumera first e second nessa ordem e obtém cada elemento que ainda não foi fornecido.

Ver também

Aplica-se a

UnionBy<TSource,TKey>(IEnumerable<TSource>, IEnumerable<TSource>, Func<TSource,TKey>, IEqualityComparer<TKey>)

Origem:
Union.cs
Origem:
Union.cs
Origem:
Union.cs
Origem:
Union.cs
Origem:
Union.cs

Produz a união conjunta de duas sequências de acordo com uma função seletora de teclas especificada.

public:
generic <typename TSource, typename TKey>
[System::Runtime::CompilerServices::Extension]
 static System::Collections::Generic::IEnumerable<TSource> ^ UnionBy(System::Collections::Generic::IEnumerable<TSource> ^ first, System::Collections::Generic::IEnumerable<TSource> ^ second, Func<TSource, TKey> ^ keySelector, System::Collections::Generic::IEqualityComparer<TKey> ^ comparer);
public static System.Collections.Generic.IEnumerable<TSource> UnionBy<TSource,TKey>(this System.Collections.Generic.IEnumerable<TSource> first, System.Collections.Generic.IEnumerable<TSource> second, Func<TSource,TKey> keySelector, System.Collections.Generic.IEqualityComparer<TKey>? comparer);
static member UnionBy : seq<'Source> * seq<'Source> * Func<'Source, 'Key> * System.Collections.Generic.IEqualityComparer<'Key> -> seq<'Source>
<Extension()>
Public Function UnionBy(Of TSource, TKey) (first As IEnumerable(Of TSource), second As IEnumerable(Of TSource), keySelector As Func(Of TSource, TKey), comparer As IEqualityComparer(Of TKey)) As IEnumerable(Of TSource)

Parâmetros de Tipo Genérico

TSource

O tipo dos elementos das sequências de entrada.

TKey

O tipo de chave para identificar elementos.

Parâmetros

first
IEnumerable<TSource>

E IEnumerable<T> cujos elementos distintos formam o primeiro conjunto para a união.

second
IEnumerable<TSource>

E IEnumerable<T> cujos elementos distintos formam o segundo conjunto para a união.

keySelector
Func<TSource,TKey>

Uma função para extrair a chave de cada elemento.

comparer
IEqualityComparer<TKey>

O IEqualityComparer<T> para comparar valores.

Devoluções

IEnumerable<TSource>

An IEnumerable<T> que contém os elementos de ambas as sequências de entrada, excluindo duplicados.

Exceções

first ou second é null.

Exemplos

O exemplo seguinte demonstra como usar UnionBy a fusão de duas coleções enquanto se utiliza um comparador personalizado para ignorar a sensibilidade a maiúsculas minúsculas ao verificar chaves duplicadas.

(string Email, string FullName)[] marketingList =
{
    ("Mahmoud.Doe@example.com", "Mahmoud Doe"),
    ("alice.smith@example.com", "Alice Smith")
};

(string Email, string FullName)[] salesList =
{
    ("ALICE.SMITH@EXAMPLE.COM", "Alice S."), // Duplicate email, different casing
    ("Sara.jones@example.com", "Sara Jones")
};

var combinedList =
    marketingList.UnionBy(
        salesList,
        contact => contact.Email,
        StringComparer.OrdinalIgnoreCase
    );

foreach (var contact in combinedList)
{
    Console.WriteLine($"{contact.FullName} ({contact.Email})");
}

/*
This code produces the following output:

Mahmoud Doe (Mahmoud.Doe@example.com)
Alice Smith (alice.smith@example.com)
Sara Jones (Sara.jones@example.com)
*/

Observações

Este método é implementado através da execução diferida. O valor de retorno imediato é um objeto que armazena toda a informação necessária para realizar a ação. A consulta representada por este método não é executada até que o objeto seja enumerado, seja chamando diretamente o seu método GetEnumerator ou usando foreach em C# ou For Each em Visual Basic.

Se comparer for null, o comparador de igualdade padrão, Default, é usado para comparar valores.

Quando o objeto devolvido por este método é enumerado, UnionBy enumera first e second nessa ordem e obtém cada elemento que ainda não foi fornecido.

Ver também

Aplica-se a