Enumerable.UnionBy Metoda

Definice

Přetížení

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

Vytvoří sjednocování dvou sekvencí podle zadané funkce selektoru klíče.

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

Vytvoří sjednocování dvou sekvencí podle zadané funkce selektoru klíče.

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

Zdroj:
Union.cs
Zdroj:
Union.cs
Zdroj:
Union.cs
Zdroj:
Union.cs
Zdroj:
Union.cs

Vytvoří sjednocování dvou sekvencí podle zadané funkce selektoru klíče.

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)

Parametry typu

TSource

Typ prvků vstupních sekvencí.

TKey

Typ klíče k identifikaci prvků.

Parametry

first
IEnumerable<TSource>

Jejíž IEnumerable<T> jedinečné prvky tvoří první sadu pro sjednocení.

second
IEnumerable<TSource>

Jejíž IEnumerable<T> jedinečné prvky tvoří druhou sadu pro sjednocení.

keySelector
Func<TSource,TKey>

Funkce, která extrahuje klíč pro každý prvek.

Návraty

IEnumerable<TSource>

Prvek IEnumerable<T> , který obsahuje prvky z obou vstupních sekvencí, s výjimkou duplicit.

Výjimky

first nebo second je null.

Příklady

Následující příklad ukazuje, jak použít UnionBy ke sloučení dvou kolekcí objektů při vyloučení duplicit na základě konkrétní vlastnosti.

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

Poznámky

Tato metoda se implementuje pomocí odloženého spuštění. Okamžitá návratová hodnota je objekt, který ukládá všechny informace potřebné k provedení akce. Dotaz reprezentovaný touto metodou se nespustí, dokud objekt nevyčte buď voláním metody GetEnumerator přímo nebo pomocí foreach v jazyce C# nebo For Each v Visual Basic.

Výchozí porovnávač rovnosti se Defaultpoužívá k porovnání hodnot.

Když je objekt vrácen touto metodou uveden, UnionBy výčet first a second v tomto pořadí a vrátí každý prvek, který ještě nebyl vrácen.

Viz také

Platí pro

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

Zdroj:
Union.cs
Zdroj:
Union.cs
Zdroj:
Union.cs
Zdroj:
Union.cs
Zdroj:
Union.cs

Vytvoří sjednocování dvou sekvencí podle zadané funkce selektoru klíče.

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)

Parametry typu

TSource

Typ prvků vstupních sekvencí.

TKey

Typ klíče k identifikaci prvků.

Parametry

first
IEnumerable<TSource>

Jejíž IEnumerable<T> jedinečné prvky tvoří první sadu pro sjednocení.

second
IEnumerable<TSource>

Jejíž IEnumerable<T> jedinečné prvky tvoří druhou sadu pro sjednocení.

keySelector
Func<TSource,TKey>

Funkce, která extrahuje klíč pro každý prvek.

comparer
IEqualityComparer<TKey>

Hodnoty IEqualityComparer<T> , které chcete porovnat.

Návraty

IEnumerable<TSource>

Prvek IEnumerable<T> , který obsahuje prvky z obou vstupních sekvencí, s výjimkou duplicit.

Výjimky

first nebo second je null.

Příklady

Následující příklad ukazuje, jak použít UnionBy ke sloučení dvou kolekcí při použití vlastního porovnávače k ignorování citlivosti malých a malých písmen při kontrole duplicitních klíčů.

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

Poznámky

Tato metoda se implementuje pomocí odloženého spuštění. Okamžitá návratová hodnota je objekt, který ukládá všechny informace potřebné k provedení akce. Dotaz reprezentovaný touto metodou se nespustí, dokud objekt nevyčte buď voláním metody GetEnumerator přímo nebo pomocí foreach v jazyce C# nebo For Each v Visual Basic.

Pokud comparer je null, výchozí porovnávání rovnosti , Defaultslouží k porovnání hodnot.

Když je objekt vrácen touto metodou uveden, UnionBy výčet first a second v tomto pořadí a vrátí každý prvek, který ještě nebyl vrácen.

Viz také

Platí pro