내보내기(0) 인쇄
모두 확장
정보
요청한 주제가 아래에 표시됩니다. 그러나 이 주제는 이 라이브러리에 포함되지 않습니다.

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

2013-12-13

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

Namespace:  System.Linq
어셈블리:  System.Core(System.Core.dll)

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

형식 매개 변수

TSource

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

매개 변수

first
형식: System.Collections.Generic.IEnumerable<TSource>
second와 비교할 IEnumerable<T>입니다.
second
형식: System.Collections.Generic.IEnumerable<TSource>
첫 번째 시퀀스와 비교할 IEnumerable<T>입니다.

반환 값

형식: System.Boolean
두 소스 시퀀스의 길이가 같고 해당 형식의 기본 같음 비교자에 따라 상응하는 요소가 서로 같으면 true이고, 그렇지 않으면 false입니다.

사용 정보

Visual Basic 및 C#에서는 이 메서드를 IEnumerable<TSource> 형식의 모든 개체에서 인스턴스 메서드로 호출할 수 있습니다. 인스턴스 메서드 구문을 사용하여 이 메서드를 호출할 경우에는 첫 번째 매개 변수를 생략합니다.

예외조건
ArgumentNullException

first 또는 secondnull입니다.

SequenceEqual<TSource>(IEnumerable<TSource>, IEnumerable<TSource>) 메서드는 두 소스 시퀀스를 병렬로 열거하고 TSource에 대한 기본 같음 비교자인 Default를 사용하여 해당 요소를 비교합니다. 기본 동등성 비교자인 DefaultIEqualityComparer<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);

         outputBlock.Text += String.Format(
             "The lists {0} equal.",
             equal ? "are" : "are not") + "\n";
      }

      /*
       This code produces the following output:

       The lists are equal.
      */



다음 코드 예제에서는 동일하지 않은 두 시퀀스를 비교합니다. 시퀀스가 동일한 데이터를 포함하지만 이들이 포함하는 개체가 다른 참조를 포함하기 때문에 시퀀스는 동일하게 간주되지 않습니다.


      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);

         outputBlock.Text += String.Format("The lists {0} equal.", equal ? "are" : "are not") + "\n";
      }

      /*
       This code produces the following output:

       The lists are not equal.
      */



단순히 참조를 비교하기 보다 시퀀스에 있는 개체의 실제 데이터를 비교할 경우, 클래스에서 IEqualityComparer<T> 제네릭 인터페이스를 구현해야 합니다.

Windows Phone OS

지원되는 버전: 8.0, 7.1, 7.0

Windows Phone

표시:
© 2015 Microsoft