比较两个列表的最快方法

leo*_*ora 10 c# collections

我有一个List(Foo),我想看看它是否等于另一个List(foo).什么是最快的方式?

flq*_*flq 24

从3.5开始,您可以使用LINQ函数:

List<string> l1 = new List<string> {"Hello", "World","How","Are","You"};
List<string> l2 = new List<string> {"Hello","World","How","Are","You"};
Console.WriteLine(l1.SequenceEqual(l2));
Run Code Online (Sandbox Code Playgroud)

它也知道提供自己的比较器的过载

  • 您将需要实现一个IEqualityComparer来比较自定义类的列表,但它的简单和这个MS页面解释了如何:http://msdn.microsoft.com/en-us/library/bb348567.aspx (2认同)

小智 13

以下是我要做的步骤:

  1. 如果为true,则执行object.ReferenceEquals(),然后返回true.
  2. 检查计数,如果不相同,则返回false.
  3. 逐个比较元素.

以下是该方法的一些建议:

  1. 将实现基于ICollection.这为您提供了计数,但不限于特定的集合类型或包含的类型.
  2. 您可以将该方法实现为ICollection的扩展方法.
  3. 您将需要使用.Equals()来比较列表的元素.