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

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

 

게시 날짜: 2016년 11월

해당 형식에 대 한 기본 같음 비교자를 사용 하 여 요소를 비교 하 여 두 시퀀스가 서로 같은지 확인 합니다.

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

public static bool SequenceEqual<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.Boolean

true 두 소스 시퀀스의 길이가 및 해당 요소가 고, 해당 형식에 대 한 기본 같음 비교자에 따라 하는 경우 그렇지 않으면 false합니다.

형식 매개 변수

TSource

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

Exception Condition
ArgumentNullException

first 또는 secondnull인 경우

SequenceEqual<TSource>(IEnumerable<TSource>, IEnumerable<TSource>) 메서드를 동시에 두 소스 시퀀스를 열거 하 고에 대 한 기본 같음 비교자를 사용 하 여 해당 요소를 비교 TSource, Default합니다. 기본 같음 비교자 Default, 를 구현 하는 형식의 값을 비교 하는 데 사용 되는 IEqualityComparer<T> 제네릭 인터페이스입니다. 사용자 지정 데이터 형식을 비교 하려면이 인터페이스를 구현 하 고 제공 고유한 GetHashCodeEquals 유형에 대 한 방법입니다.

다음 코드 예제에 사용 하는 방법을 보여 줍니다 SequenceEqual<TSource>(IEnumerable<TSource>, IEnumerable<TSource>) 두 시퀀스가 서로 같은지 여부를 확인 하려면. 처음 두 예제는 메서드는 비교 되는 시퀀스에서 동일한 개체에 대 한 참조를 포함 하는지 여부를 결정 합니다. 세 번째와 네 번째 예는 메서드는 시퀀스 내에서 개체의 실제 데이터를 비교합니다.

이 예제의 시퀀스가 동일합니다.

class Pet
{
    public string Name { get; set; }
    public int Age { get; set; }
}

public static void SequenceEqualEx1()
{
    Pet pet1 = new Pet { Name = "Turbo", Age = 2 };
    Pet pet2 = new Pet { Name = "Peanut", Age = 8 };

    // Create two lists of pets.
    List<Pet> pets1 = new List<Pet> { pet1, pet2 };
    List<Pet> pets2 = new List<Pet> { pet1, pet2 };

    bool equal = pets1.SequenceEqual(pets2);

    Console.WriteLine(
        "The lists {0} equal.",
        equal ? "are" : "are not");
}

/*
 This code produces the following output:

 The lists are equal.
*/

다음 코드 예제에서는 동일 하지 않은 두 개의 시퀀스를 비교 합니다. Note 동일한 데이터를 포함 하는 시퀀스는 포함 된 개체의 다른 참조 때문에 시퀀스 간주 됩니다.

class Pet
{
    public string Name { get; set; }
    public int Age { get; set; }
}

public static void SequenceEqualEx2()
{
    Pet pet1 = new Pet() { Name = "Turbo", Age = 2 };
    Pet pet2 = new Pet() { Name = "Peanut", Age = 8 };

    // Create two lists of pets.
    List<Pet> pets1 = new List<Pet> { pet1, pet2 };
    List<Pet> pets2 =
        new List<Pet> { new Pet { Name = "Turbo", Age = 2 }, 
                        new Pet { Name = "Peanut", Age = 8 } };

    bool equal = pets1.SequenceEqual(pets2);

    Console.WriteLine("The lists {0} equal.", equal ? "are" : "are not");
}

/*
 This code produces the following output:

 The lists are not equal.
*/

구현 해야 하는 것의 참조를 비교 하는 대신 시퀀스에 있는 개체의 실제 데이터를 비교 하려는 경우는 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 개체에 SequenceEqual<TSource>(IEnumerable<TSource>, IEnumerable<TSource>) 메서드를 다음 예와에서 같이 합니다.


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

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

bool equalAB = storeA.SequenceEqual(storeB);

Console.WriteLine("Equal? " + equalAB);

/*
    This code produces the following output:

    Equal? True
*/

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