Aracılığıyla paylaş


Enumerable.UnionBy Yöntem

Tanım

Aşırı Yüklemeler

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

Belirtilen bir anahtar seçici işlevine göre iki sıranın küme birleşimini üretir.

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

Belirtilen bir anahtar seçici işlevine göre iki sıranın küme birleşimini üretir.

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

Kaynak:
Union.cs
Kaynak:
Union.cs
Kaynak:
Union.cs
Kaynak:
Union.cs
Kaynak:
Union.cs

Belirtilen bir anahtar seçici işlevine göre iki sıranın küme birleşimini üretir.

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)

Tür Parametreleri

TSource

Giriş dizilerinin öğelerinin türü.

TKey

Öğeleri tanımlamak için kullanılacak anahtarın türü.

Parametreler

first
IEnumerable<TSource>

Birleşim IEnumerable<T> için ilk kümeyi oluşturan benzersiz öğeleri.

second
IEnumerable<TSource>

Birleşim IEnumerable<T> için ikinci kümeyi oluşturan benzersiz öğeleri.

keySelector
Func<TSource,TKey>

Her öğenin anahtarını ayıklamak için bir işlev.

Döndürülenler

IEnumerable<TSource>

IEnumerable<T> Yinelenenler hariç olmak üzere her iki giriş dizisinden öğeleri içeren bir.

Özel durumlar

first veya secondnull.

Örnekler

Aşağıdaki örnek, belirli bir özelliğe göre yinelenenleri dışlarken iki nesne koleksiyonunu birleştirmek için nasıl kullanılacağını UnionBy gösterir.

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

Açıklamalar

Bu yöntem ertelenen yürütme kullanılarak uygulanır. Hemen dönüş değeri, eylemi gerçekleştirmek için gereken tüm bilgileri depolayan bir nesnedir. Bu yöntemle temsil edilen sorgu, nesne doğrudan GetEnumerator yöntemini çağırarak veya C# içinde foreach veya Visual Basic'de For Each kullanılarak numaralandırılana kadar yürütülür.

Değerleri karşılaştırmak için varsayılan eşitlik karşılaştırıcısı Defaultkullanılır.

Bu yöntem tarafından döndürülen nesne numaralandırıldığında, UnionBy ve second sırasıyla numaralandırılır first ve henüz döndürülmemiş her öğeyi verir.

Ayrıca bkz.

Şunlara uygulanır

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

Kaynak:
Union.cs
Kaynak:
Union.cs
Kaynak:
Union.cs
Kaynak:
Union.cs
Kaynak:
Union.cs

Belirtilen bir anahtar seçici işlevine göre iki sıranın küme birleşimini üretir.

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)

Tür Parametreleri

TSource

Giriş dizilerinin öğelerinin türü.

TKey

Öğeleri tanımlamak için kullanılacak anahtarın türü.

Parametreler

first
IEnumerable<TSource>

Birleşim IEnumerable<T> için ilk kümeyi oluşturan benzersiz öğeleri.

second
IEnumerable<TSource>

Birleşim IEnumerable<T> için ikinci kümeyi oluşturan benzersiz öğeleri.

keySelector
Func<TSource,TKey>

Her öğenin anahtarını ayıklamak için bir işlev.

comparer
IEqualityComparer<TKey>

IEqualityComparer<T> değerleri karşılaştırmak için.

Döndürülenler

IEnumerable<TSource>

IEnumerable<T> Yinelenenler hariç olmak üzere her iki giriş dizisinden öğeleri içeren bir.

Özel durumlar

first veya secondnull.

Örnekler

Aşağıdaki örnek, yinelenen anahtarları denetlerken büyük/küçük harf duyarlılığını yoksaymak için özel bir karşılaştırıcı kullanırken iki koleksiyonu birleştirmek için nasıl kullanılacağını UnionBy gösterir.

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

Açıklamalar

Bu yöntem ertelenen yürütme kullanılarak uygulanır. Hemen dönüş değeri, eylemi gerçekleştirmek için gereken tüm bilgileri depolayan bir nesnedir. Bu yöntemle temsil edilen sorgu, nesne doğrudan GetEnumerator yöntemini çağırarak veya C# içinde foreach veya Visual Basic'de For Each kullanılarak numaralandırılana kadar yürütülür.

ise comparernull, değerleri karşılaştırmak için varsayılan eşitlik karşılaştırıcısı Defaultolan kullanılır.

Bu yöntem tarafından döndürülen nesne numaralandırıldığında, UnionBy ve second sırasıyla numaralandırılır first ve henüz döndürülmemiş her öğeyi verir.

Ayrıca bkz.

Şunlara uygulanır