📅  最后修改于: 2023-12-03 15:17:19.739000             🧑  作者: Mango
LINQ SequenceEqual方法用于比较两个序列是否相等。它是在System.Linq命名空间下定义的。
SequenceEqual方法有两个重载。第一个重载接受一个IEnumerable
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或自定义比较器,我们可以方便地比较各种类型的序列。