Queryable.SequenceEqual Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Avgör om två sekvenser är lika med varandra.
Överlagringar
| Name | Description |
|---|---|
| SequenceEqual<TSource>(IQueryable<TSource>, IEnumerable<TSource>) |
Avgör om två sekvenser är lika med hjälp av standardjämlikhetsjämföraren för att jämföra element. |
| SequenceEqual<TSource>(IQueryable<TSource>, IEnumerable<TSource>, IEqualityComparer<TSource>) |
Avgör om två sekvenser är lika med hjälp av en angiven IEqualityComparer<T> för att jämföra element. |
SequenceEqual<TSource>(IQueryable<TSource>, IEnumerable<TSource>)
Avgör om två sekvenser är lika med hjälp av standardjämlikhetsjämföraren för att jämföra element.
public:
generic <typename TSource>
[System::Runtime::CompilerServices::Extension]
static bool SequenceEqual(System::Linq::IQueryable<TSource> ^ source1, System::Collections::Generic::IEnumerable<TSource> ^ source2);
public static bool SequenceEqual<TSource>(this System.Linq.IQueryable<TSource> source1, System.Collections.Generic.IEnumerable<TSource> source2);
static member SequenceEqual : System.Linq.IQueryable<'Source> * seq<'Source> -> bool
<Extension()>
Public Function SequenceEqual(Of TSource) (source1 As IQueryable(Of TSource), source2 As IEnumerable(Of TSource)) As Boolean
Typparametrar
- TSource
Typ av element i indatasekvenserna.
Parametrar
- source1
- IQueryable<TSource>
En IQueryable<T> vars element ska jämföras med elementen source2i .
- source2
- IEnumerable<TSource>
En IEnumerable<T> vars element ska jämföras med elementen i den första sekvensen.
Returer
trueom de två källsekvenserna är lika långa och deras motsvarande element jämförs lika; annars . false
Undantag
source1 eller source2 är null.
Exempel
Följande kodexempel visar hur du använder SequenceEqual<TSource>(IQueryable<TSource>, IEnumerable<TSource>) för att avgöra om två sekvenser är lika med varandra. I det här exemplet är sekvenserna lika.
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.
*/
Class Pet
Public Name As String
Public Age As Integer
End Class
Shared Sub SequenceEqualEx1()
Dim pet1 As New Pet With {.Name = "Turbo", .Age = 2}
Dim pet2 As New Pet With {.Name = "Peanut", .Age = 8}
' Create two lists of pets.
Dim pets1 As New List(Of Pet)(New Pet() {pet1, pet2})
Dim pets2 As New List(Of Pet)(New Pet() {pet1, pet2})
' Determine if the lists are equal.
Dim equal As Boolean = pets1.AsQueryable().SequenceEqual(pets2)
' Display the output.
Dim text As String = IIf(equal, "are", "are not")
MsgBox("The lists " & text & " equal.")
End Sub
'This code produces the following output:
'The lists are equal.
I följande kodexempel jämförs två sekvenser som inte är lika med.
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.
*/
Class Pet
Public Name As String
Public Age As Integer
End Class
Shared Sub SequenceEqualEx2()
Dim pet1 As New Pet With {.Name = "Turbo", .Age = 2}
Dim pet2 As New Pet With {.Name = "Peanut", .Age = 8}
' Create two lists of pets.
Dim pets1 As New List(Of Pet)()
pets1.Add(pet1)
pets1.Add(pet2)
Dim pets2 As New List(Of Pet)()
pets2.Add(New Pet With {.Name = "Turbo", .Age = 2})
pets2.Add(New Pet With {.Name = "Peanut", .Age = 8})
' Determine if the lists are equal.
Dim equal As Boolean = pets1.AsQueryable().SequenceEqual(pets2)
' Display the output.
Dim text As String = IIf(equal, "are", "are not")
MsgBox("The lists " & text & " equal.")
End Sub
' This code produces the following output:
' The lists are not equal.
Kommentarer
Metoden SequenceEqual<TSource>(IQueryable<TSource>, IEnumerable<TSource>) genererar en MethodCallExpression som representerar att anropa SequenceEqual<TSource>(IQueryable<TSource>, IEnumerable<TSource>) sig själv som en konstruerad generisk metod. Den skickar sedan till Execute<TResult>(Expression) metoden för den IQueryProvider som representeras av Provider egenskapen för parameternsource1.MethodCallExpression
Frågebeteendet som uppstår till följd av att ett uttrycksträd som representerar anrop SequenceEqual<TSource>(IQueryable<TSource>, IEnumerable<TSource>) körs beror på implementeringen av source1 parametertypen. Det förväntade beteendet är att det avgör om de två källsekvenserna är lika.
Gäller för
SequenceEqual<TSource>(IQueryable<TSource>, IEnumerable<TSource>, IEqualityComparer<TSource>)
Avgör om två sekvenser är lika med hjälp av en angiven IEqualityComparer<T> för att jämföra element.
public:
generic <typename TSource>
[System::Runtime::CompilerServices::Extension]
static bool SequenceEqual(System::Linq::IQueryable<TSource> ^ source1, System::Collections::Generic::IEnumerable<TSource> ^ source2, System::Collections::Generic::IEqualityComparer<TSource> ^ comparer);
public static bool SequenceEqual<TSource>(this System.Linq.IQueryable<TSource> source1, System.Collections.Generic.IEnumerable<TSource> source2, System.Collections.Generic.IEqualityComparer<TSource> comparer);
static member SequenceEqual : System.Linq.IQueryable<'Source> * seq<'Source> * System.Collections.Generic.IEqualityComparer<'Source> -> bool
<Extension()>
Public Function SequenceEqual(Of TSource) (source1 As IQueryable(Of TSource), source2 As IEnumerable(Of TSource), comparer As IEqualityComparer(Of TSource)) As Boolean
Typparametrar
- TSource
Typ av element i indatasekvenserna.
Parametrar
- source1
- IQueryable<TSource>
En IQueryable<T> vars element ska jämföras med elementen source2i .
- source2
- IEnumerable<TSource>
En IEnumerable<T> vars element ska jämföras med elementen i den första sekvensen.
- comparer
- IEqualityComparer<TSource>
Ett IEqualityComparer<T> att använda för att jämföra element.
Returer
trueom de två källsekvenserna är lika långa och deras motsvarande element jämförs lika; annars . false
Undantag
source1 eller source2 är null.
Kommentarer
Metoden SequenceEqual<TSource>(IQueryable<TSource>, IEnumerable<TSource>, IEqualityComparer<TSource>) genererar en MethodCallExpression som representerar att anropa SequenceEqual<TSource>(IQueryable<TSource>, IEnumerable<TSource>, IEqualityComparer<TSource>) sig själv som en konstruerad generisk metod. Den skickar sedan till Execute<TResult>(Expression) metoden för den IQueryProvider som representeras av Provider egenskapen för parameternsource1.MethodCallExpression
Frågebeteendet som uppstår till följd av att ett uttrycksträd som representerar anrop SequenceEqual<TSource>(IQueryable<TSource>, IEnumerable<TSource>, IEqualityComparer<TSource>) körs beror på implementeringen av source1 parametertypen. Det förväntade beteendet är att det avgör om de två källsekvenserna är lika med hjälp comparer av för att jämföra element.