Bagikan melalui


Enumerable.UnionBy Metode

Definisi

Overload

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

Menghasilkan penyatuan yang ditetapkan dari dua urutan sesuai dengan fungsi pemilih kunci tertentu.

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

Menghasilkan penyatuan yang ditetapkan dari dua urutan sesuai dengan fungsi pemilih kunci tertentu.

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

Sumber:
Union.cs
Sumber:
Union.cs
Sumber:
Union.cs
Sumber:
Union.cs
Sumber:
Union.cs

Menghasilkan penyatuan yang ditetapkan dari dua urutan sesuai dengan fungsi pemilih kunci tertentu.

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)

Jenis parameter

TSource

Jenis elemen urutan input.

TKey

Jenis kunci untuk mengidentifikasi elemen dengan.

Parameter

first
IEnumerable<TSource>

Elemen IEnumerable<T> yang berbeda membentuk set pertama untuk serikat.

second
IEnumerable<TSource>

Elemen IEnumerable<T> berbeda yang membentuk set kedua untuk serikat.

keySelector
Func<TSource,TKey>

Fungsi untuk mengekstrak kunci untuk setiap elemen.

Mengembalikan

IEnumerable<TSource>

Yang IEnumerable<T> berisi elemen dari kedua urutan input, tidak termasuk duplikat.

Pengecualian

first atau second adalah null.

Contoh

Contoh berikut menunjukkan cara menggunakan UnionBy untuk menggabungkan dua koleksi objek sambil mengecualikan duplikat berdasarkan properti tertentu.

public static void UnionByKeySelectorExample()
{
    (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
    */
}

Keterangan

Metode ini diimplementasikan dengan menggunakan eksekusi yang ditangguhkan. Nilai pengembalian langsung adalah objek yang menyimpan semua informasi yang diperlukan untuk melakukan tindakan. Kueri yang diwakili oleh metode ini tidak dijalankan sampai objek dijumlahkan baik dengan memanggil metode GetEnumerator secara langsung atau dengan menggunakan foreach di C# atau For Each di Visual Basic.

Perbandingan kesetaraan default, Default, digunakan untuk membandingkan nilai.

Ketika objek yang dikembalikan oleh metode ini dijumlahkan, UnionBy menghitung first dan second dalam urutan tersebut dan menghasilkan setiap elemen yang belum dihasilkan.

Lihat juga

Berlaku untuk

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

Sumber:
Union.cs
Sumber:
Union.cs
Sumber:
Union.cs
Sumber:
Union.cs
Sumber:
Union.cs

Menghasilkan penyatuan yang ditetapkan dari dua urutan sesuai dengan fungsi pemilih kunci tertentu.

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)

Jenis parameter

TSource

Jenis elemen urutan input.

TKey

Jenis kunci untuk mengidentifikasi elemen dengan.

Parameter

first
IEnumerable<TSource>

Elemen IEnumerable<T> yang berbeda membentuk set pertama untuk serikat.

second
IEnumerable<TSource>

Elemen IEnumerable<T> berbeda yang membentuk set kedua untuk serikat.

keySelector
Func<TSource,TKey>

Fungsi untuk mengekstrak kunci untuk setiap elemen.

comparer
IEqualityComparer<TKey>

untuk membandingkan IEqualityComparer<T> nilai.

Mengembalikan

IEnumerable<TSource>

Yang IEnumerable<T> berisi elemen dari kedua urutan input, tidak termasuk duplikat.

Pengecualian

first atau second adalah null.

Contoh

Contoh berikut menunjukkan cara menggunakan UnionBy untuk menggabungkan dua koleksi saat menggunakan perbandingan kustom untuk mengabaikan sensitivitas kasus saat memeriksa kunci duplikat.

public static void UnionByComparerExample()
{
    (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)
    */
}

Keterangan

Metode ini diimplementasikan dengan menggunakan eksekusi yang ditangguhkan. Nilai pengembalian langsung adalah objek yang menyimpan semua informasi yang diperlukan untuk melakukan tindakan. Kueri yang diwakili oleh metode ini tidak dijalankan sampai objek dijumlahkan baik dengan memanggil metode GetEnumerator secara langsung atau dengan menggunakan foreach di C# atau For Each di Visual Basic.

Jika comparer adalah null, perbandingan kesetaraan default, Default, digunakan untuk membandingkan nilai.

Ketika objek yang dikembalikan oleh metode ini dijumlahkan, UnionBy menghitung first dan second dalam urutan tersebut dan menghasilkan setiap elemen yang belum dihasilkan.

Lihat juga

Berlaku untuk