如何比较C#3.0中的两个通用列表?
可能重复:
Is there a built-in method to compare collections in C#?如何比较C#3.0中的两个通用列表?
什么是比较在C#3.0泛型两个通用列出了最好的方法是什么?
如果要比较两个序列在.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>
实现具有相同数量的条目(因为除非可以返回空序列,即使传递给它的长度序列不同),您可以使用Count extension method执行该操作。
如果你想不管元素的顺序进行比较,尝试UnorderedEqual <牛逼>方法从这里开始:
否则:
var list1 = new List<int> { 1, 2, 3 };
var list2 = new List<int> { 1, 2, 3 };
var areSame = Enumerable.SequenceEqual(list1, list2);
cxfx:海报表示他们使用的是C#3.0,这意味着.NET 3.5具有将IEnumerable
感谢您的回答,我需要实现IEqualityCompairer接口来做我自己的比较。清单是: ListA
是的,元素顺序不是问题 – Ninja 2010-02-17 11:15:11
比较它们什么? – 2010-02-16 05:05:27