📜  LINQ SequenceEqual方法(1)

📅  最后修改于: 2023-12-03 15:17:19.739000             🧑  作者: Mango

LINQ SequenceEqual方法

LINQ SequenceEqual方法用于比较两个序列是否相等。它是在System.Linq命名空间下定义的。

使用

SequenceEqual方法有两个重载。第一个重载接受一个IEnumerable类型的参数,第二个重载接受一个IEnumerable类型的参数和一个IEqualityComparer类型的参数。以下是两个重载的方法签名:

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

下面是使用SequenceEqual方法的示例代码:

int[] numbers1 = { 1, 2, 3 };
int[] numbers2 = { 1, 2, 3 };
bool equal = numbers1.SequenceEqual(numbers2);

Console.WriteLine(equal); // 输出:True

上面的代码中,我们用SequenceEqual方法比较了两个int数组。由于它们里面的元素完全相同,所以返回True。

我们还可以使用重载的SequenceEqual方法,自定义比较器。比如,我们可以忽略大小写比较两个字符串序列,如下所示:

string[] words1 = { "hello", "world", "dotnet" };
string[] words2 = { "Hello", "World", "dotNET" };
bool equal = words1.SequenceEqual(words2, StringComparer.OrdinalIgnoreCase);

Console.WriteLine(equal); // 输出:True

在上面的代码中,我们使用了StringComparer.OrdinalIgnoreCase比较器来忽略大小写比较字符串数组。

返回值

SequenceEqual方法返回一个bool值,表示比较结果。如果两个序列相等,则返回true;否则返回false。

异常

当传递的序列为null时,SequenceEqual方法会抛出ArgumentNullException异常。

总结

LINQ SequenceEqual方法让比较两个序列是否相等变得非常简单。通过使用默认的EqualityComparer或自定义比较器,我们可以方便地比较各种类型的序列。