이 문서는 기계 번역을 이용하여 번역되었습니다. 문서를 영문으로 보려면 영문 확인란을 선택하세요. 마우스 포인터를 텍스트 위로 이동시켜 팝업 창에서 영문 텍스트를 표시할 수도 있습니다.
번역
영문

Enumerable.Join<TOuter, TInner, TKey, TResult> 메서드 (IEnumerable<TOuter>, IEnumerable<TInner>, Func<TOuter, TKey>, Func<TInner, TKey>, Func<TOuter, TInner, TResult>)

 

게시 날짜: 2016년 11월

일치 하는 키에 따라 두 시퀀스의 요소를 상호 연결 합니다. 기본 같음 비교자를 사용하여 키를 비교합니다.

네임스페이스:   System.Linq
어셈블리:  System.Core(System.Core.dll에 있음)

public static IEnumerable<TResult> Join<TOuter, TInner, TKey, TResult>(
	this IEnumerable<TOuter> outer,
	IEnumerable<TInner> inner,
	Func<TOuter, TKey> outerKeySelector,
	Func<TInner, TKey> innerKeySelector,
	Func<TOuter, TInner, TResult> resultSelector
)

매개 변수

outer
Type: System.Collections.Generic.IEnumerable<TOuter>

조인할 첫 번째 시퀀스입니다.

inner
Type: System.Collections.Generic.IEnumerable<TInner>

첫 번째 시퀀스에 조인할 시퀀스입니다.

outerKeySelector
Type: System.Func<TOuter, TKey>

첫 번째 시퀀스의 각 요소에서 조인 키를 추출하는 함수입니다.

innerKeySelector
Type: System.Func<TInner, TKey>

두 번째 시퀀스의 각 요소에서 조인 키를 추출하는 함수입니다.

resultSelector
Type: System.Func<TOuter, TInner, TResult>

일치하는 두 요소를 통해 결과 요소를 만들 함수입니다.

반환 값

Type: System.Collections.Generic.IEnumerable<TResult>

IEnumerable<T> 요소가 들어 있는 형식의 TResult 두 시퀀스에 대해 내부 조인을 수행 하 여 가져온입니다.

형식 매개 변수

TOuter

첫 번째 시퀀스 요소의 형식입니다.

TInner

두 번째 시퀀스 요소의 형식입니다.

TKey

키 선택기 함수에서 반환하는 키의 형식입니다.

TResult

결과 요소의 형식입니다.

Exception Condition
ArgumentNullException

outer 또는 inner 또는 outerKeySelector 또는 innerKeySelector 또는 resultSelectornull합니다.

이 메서드는 지연 된 실행을 사용 하 여 구현 됩니다. 즉시 반환 값은 작업을 수행 하는 데 필요한 모든 정보를 저장 하는 개체입니다. 이 방법으로 나타내는 쿼리 호출 개체가 열거 될 때까지 실행 되지 않습니다 해당 GetEnumerator 메서드를 사용 하 여 직접 또는 foreach 에서 Visual C# 또는 For Each 에 Visual Basic합니다.

기본 같음 비교자 Default, 키를 해시 및 비교 하는 데 사용 됩니다.

조인 작업의 두 가지 공통 키를 기반으로 정보 요소를 연관 시키는 가리킵니다. Join<TOuter, TInner, TKey, TResult> 두 정보 소스와는 일치 함께 하나의 메서드 호출에서 키를 제공 합니다. 이와 달리 사용 하 여에서 SelectMany, 동일한 작업을 수행 하려면 하나 이상의 메서드 호출 해야 합니다.

Join<TOuter, TInner, TKey, TResult> 요소 순서를 유지 outer, 및의 일치 하는 요소의 순서 이러한 요소의 각 inner합니다.

쿼리 식 구문에는 join (Visual C#) 또는 Join (Visual Basic)의 호출으로 변환 절 Join<TOuter, TInner, TKey, TResult>합니다.

관계형 데이터베이스 용어에서는 Join<TOuter, TInner, TKey, TResult> 메서드 내부 동등 조인을 구현 합니다. '내부' 다른 시퀀스에 일치 하는 요소에만 결과에 포함 된다는 의미입니다. ' 동등 조인 '는 조인에 키 같은지 비교 됩니다. 왼쪽 우선 외부 조인 작업에 없는 표준 쿼리 연산자를 사용 하 여 수행할 수는 GroupJoin<TOuter, TInner, TKey, TResult> 메서드. Join Operations을 참조하세요.

다음 코드 예제에 사용 하는 방법을 보여 줍니다 Join<TOuter, TInner, TKey, TResult>(IEnumerable<TOuter>, IEnumerable<TInner>, Func<TOuter, TKey>, Func<TInner, TKey>, Func<TOuter, TInner, TResult>) 공통 키에 따라 두 시퀀스의 내부 조인을 수행 합니다.

class Person
{
    public string Name { get; set; }
}

class Pet
{
    public string Name { get; set; }
    public Person Owner { get; set; }
}

public static void JoinEx1()
{
    Person magnus = new Person { Name = "Hedlund, Magnus" };
    Person terry = new Person { Name = "Adams, Terry" };
    Person charlotte = new Person { Name = "Weiss, Charlotte" };

    Pet barley = new Pet { Name = "Barley", Owner = terry };
    Pet boots = new Pet { Name = "Boots", Owner = terry };
    Pet whiskers = new Pet { Name = "Whiskers", Owner = charlotte };
    Pet daisy = new Pet { Name = "Daisy", Owner = magnus };

    List<Person> people = new List<Person> { magnus, terry, charlotte };
    List<Pet> pets = new List<Pet> { barley, boots, whiskers, daisy };

    // Create a list of Person-Pet pairs where 
    // each element is an anonymous type that contains a
    // Pet's name and the name of the Person that owns the Pet.
    var query =
        people.Join(pets,
                    person => person,
                    pet => pet.Owner,
                    (person, pet) =>
                        new { OwnerName = person.Name, Pet = pet.Name });

    foreach (var obj in query)
    {
        Console.WriteLine(
            "{0} - {1}",
            obj.OwnerName,
            obj.Pet);
    }
}

/*
 This code produces the following output:

 Hedlund, Magnus - Daisy
 Adams, Terry - Barley
 Adams, Terry - Boots
 Weiss, Charlotte - Whiskers
*/

유니버설 Windows 플랫폼
8 이후 사용 가능
.NET Framework
3.5 이후 사용 가능
이식 가능한 클래스 라이브러리
이식 가능한 .NET 플랫폼 에서 지원됨
Silverlight
2.0 이후 사용 가능
Windows Phone Silverlight
7.0 이후 사용 가능
Windows Phone
8.1 이후 사용 가능
맨 위로 이동
표시: