Enumerable.UnionBy Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Перегрузки
| Имя | Описание |
|---|---|
| UnionBy<TSource,TKey>(IEnumerable<TSource>, IEnumerable<TSource>, Func<TSource,TKey>) |
Создает объединение наборов двух последовательностей в соответствии с указанной функцией селектора ключей. |
| UnionBy<TSource,TKey>(IEnumerable<TSource>, IEnumerable<TSource>, Func<TSource,TKey>, IEqualityComparer<TKey>) |
Создает объединение наборов двух последовательностей в соответствии с указанной функцией селектора ключей. |
UnionBy<TSource,TKey>(IEnumerable<TSource>, IEnumerable<TSource>, Func<TSource,TKey>)
- Исходный код:
- Union.cs
- Исходный код:
- Union.cs
- Исходный код:
- Union.cs
- Исходный код:
- Union.cs
- Исходный код:
- Union.cs
Создает объединение наборов двух последовательностей в соответствии с указанной функцией селектора ключей.
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)
Параметры типа
- TSource
Тип элементов входных последовательностей.
- TKey
Тип ключа для идентификации элементов.
Параметры
- first
- IEnumerable<TSource>
IEnumerable<T> Чей отдельный элемент формирует первый набор для объединения.
- second
- IEnumerable<TSource>
Отдельные IEnumerable<T> элементы которого образуют второй набор для объединения.
- keySelector
- Func<TSource,TKey>
Функция для извлечения ключа для каждого элемента.
Возвращаемое значение
Объект IEnumerable<T> , содержащий элементы из обеих входных последовательностей, за исключением дубликатов.
Исключения
first или second есть null.
Примеры
В следующем примере показано, как объединить UnionBy две коллекции объектов при исключении дубликатов на основе определенного свойства.
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
*/
}
Комментарии
Этот метод реализуется с помощью отложенного выполнения. Немедленное возвращаемое значение — это объект, в который хранятся все сведения, необходимые для выполнения действия. Запрос, представленный этим методом, не выполняется, пока объект не перечисляется путем вызова метода GetEnumerator напрямую или с помощью метода foreach в C# или For Each в Visual Basic.
Сравнение Defaultравенства по умолчанию используется для сравнения значений.
При перечислении объекта, возвращаемого этим методом, UnionBy перечисляет first и second в этом порядке и возвращает каждый элемент, который еще не был возвращен.
См. также раздел
Применяется к
UnionBy<TSource,TKey>(IEnumerable<TSource>, IEnumerable<TSource>, Func<TSource,TKey>, IEqualityComparer<TKey>)
- Исходный код:
- Union.cs
- Исходный код:
- Union.cs
- Исходный код:
- Union.cs
- Исходный код:
- Union.cs
- Исходный код:
- Union.cs
Создает объединение наборов двух последовательностей в соответствии с указанной функцией селектора ключей.
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)
Параметры типа
- TSource
Тип элементов входных последовательностей.
- TKey
Тип ключа для идентификации элементов.
Параметры
- first
- IEnumerable<TSource>
IEnumerable<T> Чей отдельный элемент формирует первый набор для объединения.
- second
- IEnumerable<TSource>
Отдельные IEnumerable<T> элементы которого образуют второй набор для объединения.
- keySelector
- Func<TSource,TKey>
Функция для извлечения ключа для каждого элемента.
- comparer
- IEqualityComparer<TKey>
Для сравнения значений IEqualityComparer<T> .
Возвращаемое значение
Объект IEnumerable<T> , содержащий элементы из обеих входных последовательностей, за исключением дубликатов.
Исключения
first или second есть null.
Примеры
В следующем примере показано, как объединить UnionBy две коллекции при использовании пользовательского сравнения, чтобы игнорировать конфиденциальность регистра при проверке повторяющихся ключей.
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)
*/
}
Комментарии
Этот метод реализуется с помощью отложенного выполнения. Немедленное возвращаемое значение — это объект, в который хранятся все сведения, необходимые для выполнения действия. Запрос, представленный этим методом, не выполняется, пока объект не перечисляется путем вызова метода GetEnumerator напрямую или с помощью метода foreach в C# или For Each в Visual Basic.
Если comparer используется nullсравнение равенства по умолчанию, Defaultиспользуется для сравнения значений.
При перечислении объекта, возвращаемого этим методом, UnionBy перечисляет first и second в этом порядке и возвращает каждый элемент, который еще не был возвращен.