SequenceEqual
Determines whether two sequences are equal by comparing the elements of the two sequences.
static bool SequenceEqual<TSource>(this IEnumerable<TSource> first, IEnumerable<TSource> second)
static bool SequenceEqual<TSource>(this IEnumerable<TSource> first, IEnumerable<TSource> second, IEqualityComparer<TSource> comparer)
Parameters
Name | Type | Description |
---|---|---|
first |
IEnumerable<TSource> |
The first sequence to compare. |
second |
IEnumerable<TSource> |
The second sequence to compare. |
comparer |
IEqualityComparer<TSource> |
An IEqualityComparer<TSource> to compare elements. If null , the default equality comparer is used. |
Returns
bool
: true
if the two sequences are equal; otherwise, false
.
Remarks
Two sequences are considered equal if they have the same number of elements, and all corresponding elements in the two sequences are equal, as determined by the default equality comparer for their type or by an explicitly provided IEqualityComparer<TSource>
.
This method uses deferred execution.
Example
using System;
using System.Collections.Generic;
using System.Linq;
public class SequenceEqualExample
{
public static void Main(string[] args)
{
List<int> numbers1 = new List<int> { 1, 2, 3, 4, 5 };
List<int> numbers2 = new List<int> { 1, 2, 3, 4, 5 };
List<int> numbers3 = new List<int> { 1, 2, 3, 5, 4 };
List<int> numbers4 = new List<int> { 1, 2, 3, 4 };
// Compare two identical sequences
bool areEqual1 = numbers1.SequenceEqual(numbers2);
Console.WriteLine($"numbers1 and numbers2 are equal: {areEqual1}"); // Output: numbers1 and numbers2 are equal: True
// Compare sequences with different order
bool areEqual2 = numbers1.SequenceEqual(numbers3);
Console.WriteLine($"numbers1 and numbers3 are equal: {areEqual2}"); // Output: numbers1 and numbers3 are equal: False
// Compare sequences with different lengths
bool areEqual3 = numbers1.SequenceEqual(numbers4);
Console.WriteLine($"numbers1 and numbers4 are equal: {areEqual3}"); // Output: numbers1 and numbers4 are equal: False
// Example with custom comparer (case-insensitive string comparison)
List<string> words1 = new List<string> { "apple", "Banana", "Cherry" };
List<string> words2 = new List<string> { "apple", "banana", "cherry" };
bool areEqualCaseInsensitive = words1.SequenceEqual(words2, StringComparer.OrdinalIgnoreCase);
Console.WriteLine($"words1 and words2 are equal (case-insensitive): {areEqualCaseInsensitive}"); // Output: words1 and words2 are equal (case-insensitive): True
}
}