Enumerable.UnionBy Methode

Definitie

Overloads

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

Produceert de set-samenvoeging van twee reeksen volgens een opgegeven sleutelkiezerfunctie.

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

Produceert de set-samenvoeging van twee reeksen volgens een opgegeven sleutelkiezerfunctie.

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

Bron:
Union.cs
Bron:
Union.cs
Bron:
Union.cs
Bron:
Union.cs
Bron:
Union.cs

Produceert de set-samenvoeging van twee reeksen volgens een opgegeven sleutelkiezerfunctie.

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)

Type parameters

TSource

Het type van de elementen van de invoerreeksen.

TKey

Het type sleutel om elementen te identificeren.

Parameters

first
IEnumerable<TSource>

Een IEnumerable<T> wiens afzonderlijke elementen de eerste set vormen voor de samenvoeging.

second
IEnumerable<TSource>

Een IEnumerable<T> wiens afzonderlijke elementen de tweede set vormen voor de samenvoeging.

keySelector
Func<TSource,TKey>

Een functie om de sleutel voor elk element te extraheren.

Retouren

IEnumerable<TSource>

Een IEnumerable<T> die de elementen uit beide invoerreeksen bevat, met uitzondering van duplicaten.

Uitzonderingen

first of second is null.

Voorbeelden

In het volgende voorbeeld ziet u hoe UnionBy u twee verzamelingen objecten samenvoegt terwijl duplicaten worden uitgesloten op basis van een specifieke eigenschap.

(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
*/

Opmerkingen

Deze methode wordt geïmplementeerd met behulp van de uitgestelde uitvoering. De onmiddellijke retourwaarde is een object waarin alle informatie wordt opgeslagen die nodig is om de actie uit te voeren. De query die door deze methode wordt vertegenwoordigd, wordt pas uitgevoerd nadat het object is geïnventariseerd door de methode GetEnumerator rechtstreeks aan te roepen of door foreach te gebruiken in C# of For Each in Visual Basic.

De standaard gelijkheidsgelijker, Defaultwordt gebruikt om waarden te vergelijken.

Wanneer het object dat door deze methode wordt geretourneerd, UnionByfirst wordt geïnventariseerd en second in die volgorde opgesomd en wordt elk element geretourneerd dat nog niet is opgehaald.

Zie ook

Van toepassing op

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

Bron:
Union.cs
Bron:
Union.cs
Bron:
Union.cs
Bron:
Union.cs
Bron:
Union.cs

Produceert de set-samenvoeging van twee reeksen volgens een opgegeven sleutelkiezerfunctie.

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)

Type parameters

TSource

Het type van de elementen van de invoerreeksen.

TKey

Het type sleutel om elementen te identificeren.

Parameters

first
IEnumerable<TSource>

Een IEnumerable<T> wiens afzonderlijke elementen de eerste set vormen voor de samenvoeging.

second
IEnumerable<TSource>

Een IEnumerable<T> wiens afzonderlijke elementen de tweede set vormen voor de samenvoeging.

keySelector
Func<TSource,TKey>

Een functie om de sleutel voor elk element te extraheren.

comparer
IEqualityComparer<TKey>

De IEqualityComparer<T> waarden die moeten worden vergeleken.

Retouren

IEnumerable<TSource>

Een IEnumerable<T> die de elementen uit beide invoerreeksen bevat, met uitzondering van duplicaten.

Uitzonderingen

first of second is null.

Voorbeelden

In het volgende voorbeeld ziet u hoe UnionBy u twee verzamelingen kunt samenvoegen terwijl u een aangepaste vergelijking gebruikt om hoofdlettergevoeligheid te negeren bij het controleren op dubbele sleutels.

(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)
*/

Opmerkingen

Deze methode wordt geïmplementeerd met behulp van de uitgestelde uitvoering. De onmiddellijke retourwaarde is een object waarin alle informatie wordt opgeslagen die nodig is om de actie uit te voeren. De query die door deze methode wordt vertegenwoordigd, wordt pas uitgevoerd nadat het object is geïnventariseerd door de methode GetEnumerator rechtstreeks aan te roepen of door foreach te gebruiken in C# of For Each in Visual Basic.

Als comparer dit het nullstandaardgelijker voor gelijkheid is, Defaultwordt gebruikt om waarden te vergelijken.

Wanneer het object dat door deze methode wordt geretourneerd, UnionByfirst wordt geïnventariseerd en second in die volgorde opgesomd en wordt elk element geretourneerd dat nog niet is opgehaald.

Zie ook

Van toepassing op