可能重复:
Is there a built-in method to compare collections in C#?
与C#3.0中的通用两个通用列表进行比较的最佳方法是什么?
答案 0 :(得分: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);
答案 1 :(得分:1)
如果要比较.NET 3.5及更高版本中的两个序列(这是C#3.0附带的框架版本),那么您应该使用SeqenceEqual extension method on the Enumerable class in the System.Linq namespace。
但是,为此,它将在它所比较的IEnumerable<T>
实现中使用类型参数T的默认相等比较器。
如果要更改检查相等性的方式,则应将IEqualityComparer<T>
的实现传递给SequenceEqual方法,以便在比较每个序列中的项时使用。
此外,如果您正在尝试查看两个集是否相等(由IEnumerable<T>
表示),那么您最好的选择是检查使用Except extension method on the Enumerable class并确保结果集没有任何条目,并且两个IEnumerable<T>
实现具有相同数量的条目(因为Except可以返回一个空序列,即使传递给它的长度序列不同),您可以使用{ {3}}
答案 2 :(得分:1)
查看此answer,它提供了一种方法,用于确定两个序列是否包含相同的元素。