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

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

 

게시 날짜: 2016년 11월

지정 된 사용 하 여 해당 요소를 비교 하 여 두 시퀀스가 서로 같은지 확인 IEqualityComparer<T>합니다.

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

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

매개 변수

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

IEnumerable<T> 비교할 second합니다.

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

IEnumerable<T> 첫 번째 시퀀스와 비교할 수 있습니다.

comparer
Type: System.Collections.Generic.IEqualityComparer<TSource>

IEqualityComparer<T> 요소를 비교 하는 데 있습니다.

반환 값

Type: System.Boolean

true 두 소스 시퀀스의 길이가 해당 요소에 따라 같다고 간주 되 면 comparer고, 그렇지 않으면 false합니다.

형식 매개 변수

TSource

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

Exception Condition
ArgumentNullException

first 또는 secondnull인 경우

SequenceEqual<TSource>(IEnumerable<TSource>, IEnumerable<TSource>, IEqualityComparer<TSource>) 메서드를 동시에 두 소스 시퀀스를 열거 하 고 지정 된 사용 하 여 해당 요소를 비교 IEqualityComparer<T>합니다. Comparernull, 기본 같음 비교자 Default, 요소를 비교 하는 데 사용 됩니다.

다음 예제에서 사용할 수 있는 같음 비교자를 구현 하는 방법을 SequenceEqual<TSource>(IEnumerable<TSource>, IEnumerable<TSource>, IEqualityComparer<TSource>) 메서드.

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

// Custom comparer for the Product class
class ProductComparer : IEqualityComparer<Product>
{
    // Products are equal if their names and product numbers are equal.
    public bool Equals(Product x, Product y)
    {

        //Check whether the compared objects reference the same data.
        if (Object.ReferenceEquals(x, y)) return true;

        //Check whether any of the compared objects is null.
        if (Object.ReferenceEquals(x, null) || Object.ReferenceEquals(y, null))
            return false;

        //Check whether the products' properties are equal.
        return x.Code == y.Code && x.Name == y.Name;
    }

    // If Equals() returns true for a pair of objects 
    // then GetHashCode() must return the same value for these objects.

    public int GetHashCode(Product product)
    {
        //Check whether the object is null
        if (Object.ReferenceEquals(product, null)) return 0;

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

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

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

}

이 비교자를 구현한 후 시퀀스를 사용할 수 있습니다 Product 개체에 SequenceEqual<TSource>(IEnumerable<TSource>, IEnumerable<TSource>, IEqualityComparer<TSource>) 메서드를 다음 예와에서 같이 합니다.


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

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

bool equalAB = storeA.SequenceEqual(storeB, new ProductComparer());

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 이후 사용 가능
맨 위로 이동
표시: