可能重复:
是否有内置方法来比较 C# 中的集合?
与 C# 3.0 中的两个泛型列表进行比较的最佳方法是什么?
如果您想比较元素顺序,请尝试此处的UnorderedEqual<T>方法:
否则:
var list1 = new List<int> { 1, 2, 3 };
var list2 = new List<int> { 1, 2, 3 };
var areSame = Enumerable.SequenceEqual(list1, list2);
如果您想比较 .NET 3.5 及更高版本中的两个序列(这是 C# 3.0 附带的框架版本),那么您应该在 System.Linq 命名空间中的 Enumerable 类上使用 SeqenceEqual 扩展方法。
但是,为此,它将在IEnumerable<T>
它正在比较的实现中使用类型参数 T 的默认相等比较器。
如果要更改检查相等性的方式,则应将 的实现传递IEqualityComparer<T>
给 SequenceEqual 方法,以便在比较每个序列中的项目时使用。
此外,如果您尝试查看两个集合是否相等(由两种实现都具有相同数量的条目(因为即使传递给它的序列长度不同,除外也可以返回空序列),您可以使用Count 扩展方法来执行此操作。IEnumerable<T>
IEnumerable<T>
查看这个答案,它提供了一种确定两个序列是否包含相同元素的方法。