Ler em inglês

Partilhar via


Queryable.SequenceEqual Método

Definição

Determina se duas sequências são iguais.

Sobrecargas

SequenceEqual<TSource>(IQueryable<TSource>, IEnumerable<TSource>)

Determina se duas sequências são iguais usando o comparador de igualdade padrão para comparar elementos.

SequenceEqual<TSource>(IQueryable<TSource>, IEnumerable<TSource>, IEqualityComparer<TSource>)

Determina se duas sequências são iguais usando um IEqualityComparer<T> especificado para comparar elementos.

SequenceEqual<TSource>(IQueryable<TSource>, IEnumerable<TSource>)

Origem:
Queryable.cs
Origem:
Queryable.cs
Origem:
Queryable.cs

Determina se duas sequências são iguais usando o comparador de igualdade padrão para comparar elementos.

C#
public static bool SequenceEqual<TSource> (this System.Linq.IQueryable<TSource> source1, System.Collections.Generic.IEnumerable<TSource> source2);

Parâmetros de tipo

TSource

O tipo dos elementos das sequências de entrada.

Parâmetros

source1
IQueryable<TSource>

Um IQueryable<T> cujos elementos serão comparados aos de source2.

source2
IEnumerable<TSource>

Um IEnumerable<T> cujos elementos serão comparados aos da primeira sequência.

Retornos

true se as duas sequências de origem tiverem comprimento igual e seus elementos correspondentes forem iguais; caso contrário, false.

Exceções

source1 ou source2 é null.

Exemplos

O exemplo de código a seguir demonstra como usar SequenceEqual<TSource>(IQueryable<TSource>, IEnumerable<TSource>) para determinar se duas sequências são iguais. Neste exemplo, as sequências são iguais.

C#
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 };

    // Determine if the lists are equal.
    bool equal = pets1.AsQueryable().SequenceEqual(pets2);

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

/*
    This code produces the following output:

    The lists are equal.
*/

O exemplo de código a seguir compara duas sequências que não são iguais.

C#
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 }
    };

    // Determine if the lists are equal.
    bool equal = pets1.AsQueryable().SequenceEqual(pets2);

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

/*
    This code produces the following output:

    The lists are NOT equal.
*/

Comentários

O método SequenceEqual<TSource>(IQueryable<TSource>, IEnumerable<TSource>) gera um MethodCallExpression que representa a chamada SequenceEqual<TSource>(IQueryable<TSource>, IEnumerable<TSource>) si mesmo como um método genérico construído. Em seguida, ele passa o MethodCallExpression para o método Execute<TResult>(Expression) do IQueryProvider representado pela propriedade Provider do parâmetro source1.

O comportamento da consulta que ocorre como resultado da execução de uma árvore de expressão que representa a chamada SequenceEqual<TSource>(IQueryable<TSource>, IEnumerable<TSource>) depende da implementação do tipo do parâmetro source1. O comportamento esperado é que ele determina se as duas sequências de origem são iguais.

Aplica-se a

.NET 9 e outras versões
Produto Versões
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1
UWP 10.0

SequenceEqual<TSource>(IQueryable<TSource>, IEnumerable<TSource>, IEqualityComparer<TSource>)

Origem:
Queryable.cs
Origem:
Queryable.cs
Origem:
Queryable.cs

Determina se duas sequências são iguais usando um IEqualityComparer<T> especificado para comparar elementos.

C#
public static bool SequenceEqual<TSource> (this System.Linq.IQueryable<TSource> source1, System.Collections.Generic.IEnumerable<TSource> source2, System.Collections.Generic.IEqualityComparer<TSource> comparer);
C#
public static bool SequenceEqual<TSource> (this System.Linq.IQueryable<TSource> source1, System.Collections.Generic.IEnumerable<TSource> source2, System.Collections.Generic.IEqualityComparer<TSource>? comparer);

Parâmetros de tipo

TSource

O tipo dos elementos das sequências de entrada.

Parâmetros

source1
IQueryable<TSource>

Um IQueryable<T> cujos elementos serão comparados aos de source2.

source2
IEnumerable<TSource>

Um IEnumerable<T> cujos elementos serão comparados aos da primeira sequência.

comparer
IEqualityComparer<TSource>

Um IEqualityComparer<T> a ser usado para comparar elementos.

Retornos

true se as duas sequências de origem tiverem comprimento igual e seus elementos correspondentes forem iguais; caso contrário, false.

Exceções

source1 ou source2 é null.

Comentários

O método SequenceEqual<TSource>(IQueryable<TSource>, IEnumerable<TSource>, IEqualityComparer<TSource>) gera um MethodCallExpression que representa a chamada SequenceEqual<TSource>(IQueryable<TSource>, IEnumerable<TSource>, IEqualityComparer<TSource>) si mesmo como um método genérico construído. Em seguida, ele passa o MethodCallExpression para o método Execute<TResult>(Expression) do IQueryProvider representado pela propriedade Provider do parâmetro source1.

O comportamento da consulta que ocorre como resultado da execução de uma árvore de expressão que representa a chamada SequenceEqual<TSource>(IQueryable<TSource>, IEnumerable<TSource>, IEqualityComparer<TSource>) depende da implementação do tipo do parâmetro source1. O comportamento esperado é que ele determina se as duas sequências de origem são iguais usando comparer para comparar elementos.

Aplica-se a

.NET 9 e outras versões
Produto Versões
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1
UWP 10.0