如何在C#3.0中比较两个通用列表?

时间:2010-02-16 04:57:40

标签: generics c#-3.0 list-comparison

  

可能重复:
  Is there a built-in method to compare collections in C#?

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

3 个答案:

答案 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,它提供了一种方法,用于确定两个序列是否包含相同的元素。