0

可能重复:
是否有内置方法来比较 C# 中的集合?

与 C# 3.0 中的两个泛型列表进行比较的最佳方法是什么?

4

3 回答 3

2

如果您想比较元素顺序,请尝试此处的UnorderedEqual<T>方法:

否则:

var list1 = new List<int> { 1, 2, 3 };
var list2 = new List<int> { 1, 2, 3 };
var areSame = Enumerable.SequenceEqual(list1, list2);
于 2010-02-16T05:06:22.233 回答
1

如果您想比较 .NET 3.5 及更高版本中的两个序列(这是 C# 3.0 附带的框架版本),那么您应该在 System.Linq 命名空间中的 Enumerable 类上使用 SeqenceEqual 扩展方法

但是,为此,它将在IEnumerable<T>它正在比较的实现中使用类型参数 T 的默认相等比较器。

如果要更改检查相等性的方式,则应将 的实现传递IEqualityComparer<T>给 SequenceEqual 方法,以便在比较每个序列中的项目时使用。

此外,如果您尝试查看两个集合是否相等(由两种实现都具有相同数量的条目(因为即使传递给它的序列长度不同,除外也可以返回空序列),您可以使用Count 扩展方法来执行此操作。IEnumerable<T>IEnumerable<T>

于 2010-02-16T05:03:41.447 回答
1

查看这个答案,它提供了一种确定两个序列是否包含相同元素的方法。

于 2010-02-16T05:04:42.377 回答