Enumerable.UnionBy Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Ö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
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
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.