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

Enumerable.Intersect<TSource> 메서드 (IEnumerable<TSource>, IEnumerable<TSource>)

 

게시 날짜: 2016년 11월

기본 같음 비교자를 사용 하 여 값을 비교 하 여 두 시퀀스의 교집합을 구합니다.

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

public static IEnumerable<TSource> Intersect<TSource>(
	this IEnumerable<TSource> first,
	IEnumerable<TSource> second
)

매개 변수

first
Type: System.Collections.Generic.IEnumerable<TSource>

IEnumerable<T> 도 있는 고유 요소가 second 반환 됩니다.

second
Type: System.Collections.Generic.IEnumerable<TSource>

IEnumerable<T> 첫 번째 시퀀스에도 있는 고유 요소가 반환 됩니다.

반환 값

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

두 시퀀스의 교집합을 이루는 요소가 들어 있는 시퀀스입니다.

형식 매개 변수

TSource

입력 시퀀스 요소의 형식입니다.

Exception Condition
ArgumentNullException

first 또는 secondnull인 경우

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

A와 B에는 두 집합의 교집합 B에도 표시 하는 A의 모든 요소가 있지만 다른 요소를 포함 하는 집합으로 정의 됩니다.

이 메서드가 반환 하는 개체를 열거 하는 경우 Intersect<TSource> 에 나타나는 순서 대로 두 시퀀스에서 발생 하는 고유 요소를 생성 first합니다.

기본 같음 비교자 Default를 구현 하는 형식의 값을 비교 하는 데 사용 되는 IEqualityComparer<T> 제네릭 인터페이스입니다. 사용자 지정 데이터 형식을 비교 하려면이 인터페이스를 구현 하 고 제공 직접 GetHashCodeEquals 유형에 대 한 방법입니다.

다음 코드 예제에서는 사용 하는 방법을 보여 줍니다. Intersect<TSource>(IEnumerable<TSource>, IEnumerable<TSource>) 를 각각 두 정수 시퀀스에 표시 되는 요소를 반환 합니다.

int[] id1 = { 44, 26, 92, 30, 71, 38 };
int[] id2 = { 39, 59, 83, 47, 26, 4, 30 };

IEnumerable<int> both = id1.Intersect(id2);

foreach (int id in both)
    Console.WriteLine(id);

/*
 This code produces the following output:

 26
 30
*/

사용자 지정 데이터 형식 개체의 시퀀스를 비교 하려는 경우 구현 해야 할는 IEqualityComparer<T> 도우미 클래스에 제네릭 인터페이스입니다. 다음 코드 예제에서는 사용자 지정 데이터 형식에이 인터페이스를 구현 하 고 제공 하는 방법을 보여 줍니다 GetHashCodeEquals 메서드.

public class ProductA
{ 
    public string Name { get; set; }
    public int Code { get; set; }
}

public class ProductComparer : IEqualityComparer<ProductA>
{

    public bool Equals(ProductA x, ProductA y)
    {
        //Check whether the objects are the same object. 
        if (Object.ReferenceEquals(x, y)) return true;

        //Check whether the products' properties are equal. 
        return x != null && y != null && x.Code.Equals(y.Code) && x.Name.Equals(y.Name);
    }

    public int GetHashCode(ProductA obj)
    {
        //Get hash code for the Name field if it is not null. 
        int hashProductName = obj.Name == null ? 0 : obj.Name.GetHashCode();

        //Get hash code for the Code field. 
        int hashProductCode = obj.Code.GetHashCode();

        //Calculate the hash code for the product. 
        return hashProductName ^ hashProductCode;
    }
}

이 인터페이스를 구현한 후 시퀀스를 사용할 수 있습니다 ProductA 개체에 Intersect<TSource> 메서드를 다음 예제와 같이 합니다.

ProductA[] store1 = { new ProductA { Name = "apple", Code = 9 }, 
                       new ProductA { Name = "orange", Code = 4 } };

ProductA[] store2 = { new ProductA { Name = "apple", Code = 9 }, 
                       new ProductA { Name = "lemon", Code = 12 } };
// Get the products from the first array 
// that have duplicates in the second array.

IEnumerable<ProductA> duplicates =
    store1.Intersect(store2, new ProductComparer());

foreach (var product in duplicates)
    Console.WriteLine(product.Name + " " + product.Code);

/*
    This code produces the following output:
    apple 9
*/

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