Enumerable.UnionBy Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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
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
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.