Enumerable.UnionBy Metod

Definition

Överlagringar

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

Skapar uppsättningen union av två sekvenser enligt en angiven nyckelväljare funktion.

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

Skapar uppsättningen union av två sekvenser enligt en angiven nyckelväljare funktion.

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

Källa:
Union.cs
Källa:
Union.cs
Källa:
Union.cs
Källa:
Union.cs
Källa:
Union.cs

Skapar uppsättningen union av två sekvenser enligt en angiven nyckelväljare funktion.

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)

Typparametrar

TSource

Typ av element i indatasekvenserna.

TKey

Vilken typ av nyckel som elementen ska identifieras av.

Parametrar

first
IEnumerable<TSource>

En IEnumerable<T> vars distinkta element utgör den första uppsättningen för unionen.

second
IEnumerable<TSource>

En IEnumerable<T> vars distinkta element utgör den andra uppsättningen för unionen.

keySelector
Func<TSource,TKey>

En funktion för att extrahera nyckeln för varje element.

Returer

IEnumerable<TSource>

En IEnumerable<T> som innehåller elementen från båda indatasekvenserna, exklusive dubbletter.

Undantag

first eller second är null.

Exempel

I följande exempel visas hur du använder UnionBy för att sammanfoga två samlingar med objekt samtidigt som dubbletter exkluderas baserat på en specifik egenskap.

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

Kommentarer

Den här metoden implementeras med uppskjuten körning. Det omedelbara returvärdet är ett objekt som lagrar all information som krävs för att utföra åtgärden. Frågan som representeras av den här metoden körs inte förrän objektet räknas upp antingen genom att anropa metoden GetEnumerator direkt eller med hjälp av foreach i C# eller For Each i Visual Basic.

Standardjämförlikningsjämföraren, Default, används för att jämföra värden.

När objektet som returneras av den här metoden räknas UnionBy upp räknar upp first och second i den ordningen och ger varje element som inte redan har getts.

Se även

Gäller för

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

Källa:
Union.cs
Källa:
Union.cs
Källa:
Union.cs
Källa:
Union.cs
Källa:
Union.cs

Skapar uppsättningen union av två sekvenser enligt en angiven nyckelväljare funktion.

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)

Typparametrar

TSource

Typ av element i indatasekvenserna.

TKey

Vilken typ av nyckel som elementen ska identifieras av.

Parametrar

first
IEnumerable<TSource>

En IEnumerable<T> vars distinkta element utgör den första uppsättningen för unionen.

second
IEnumerable<TSource>

En IEnumerable<T> vars distinkta element utgör den andra uppsättningen för unionen.

keySelector
Func<TSource,TKey>

En funktion för att extrahera nyckeln för varje element.

comparer
IEqualityComparer<TKey>

Att IEqualityComparer<T> jämföra värden.

Returer

IEnumerable<TSource>

En IEnumerable<T> som innehåller elementen från båda indatasekvenserna, exklusive dubbletter.

Undantag

first eller second är null.

Exempel

I följande exempel visas hur du använder UnionBy för att sammanfoga två samlingar när du använder en anpassad jämförelse för att ignorera skiftlägeskänslighet när du söker efter dubblettnycklar.

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

Kommentarer

Den här metoden implementeras med uppskjuten körning. Det omedelbara returvärdet är ett objekt som lagrar all information som krävs för att utföra åtgärden. Frågan som representeras av den här metoden körs inte förrän objektet räknas upp antingen genom att anropa metoden GetEnumerator direkt eller med hjälp av foreach i C# eller For Each i Visual Basic.

Om comparer är nullanvänds standardjämlikhetsjämförlikningsjämföraren, Default, för att jämföra värden.

När objektet som returneras av den här metoden räknas UnionBy upp räknar upp first och second i den ordningen och ger varje element som inte redan har getts.

Se även

Gäller för