Enumerable.UnionBy 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
오버로드
| Name | Description |
|---|---|
| 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>)
- Source:
- Union.cs
- Source:
- Union.cs
- Source:
- Union.cs
- Source:
- Union.cs
- Source:
- 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 메서드를 직접 호출하거나 C#의 foreach 또는 Visual Basic For Each 사용하여 개체가 열거될 때까지 실행되지 않습니다.
기본 같음 비교자는 Default값을 비교하는 데 사용됩니다.
이 메서드에서 반환된 개체가 열거되면 UnionBy 해당 순서대로 열거 first 하고 second 아직 생성되지 않은 각 요소를 생성합니다.
추가 정보
적용 대상
UnionBy<TSource,TKey>(IEnumerable<TSource>, IEnumerable<TSource>, Func<TSource,TKey>, IEqualityComparer<TKey>)
- Source:
- Union.cs
- Source:
- Union.cs
- Source:
- Union.cs
- Source:
- Union.cs
- Source:
- 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 메서드를 직접 호출하거나 C#의 foreach 또는 Visual Basic For Each 사용하여 개체가 열거될 때까지 실행되지 않습니다.
comparer기본 같음 비교자null인 경우 Default 값을 비교하는 데 사용됩니다.
이 메서드에서 반환된 개체가 열거되면 UnionBy 해당 순서대로 열거 first 하고 second 아직 생성되지 않은 각 요소를 생성합니다.