System.Collections.Generic.List <T>的等于方法......?

Sam*_*mbo 11 .net c# list equals

我正在创建一个派生自List的类...

public class MyList : List<MyListItem> {}

我已经覆盖了MyListItem的Equals ...

public override bool Equals(object obj)
{
    MyListItem li = obj as MyListItem;
    return (ID == li.ID);  // ID is a property of MyListItem
}
Run Code Online (Sandbox Code Playgroud)

我想在MyList对象中也有一个Equals方法,它将比较列表中的每个项目,在每个MyListItem对象上调用Equals().

简单地打电话会很好...

MyList l1 = new MyList() { new MyListItem(1), new MyListItem(2) };
MyList l2 = new MyList() { new MyListItem(1), new MyListItem(2) };

if (l1 == l2)
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

...并按值完成列表的比较.

什么是最好的方式......?

bka*_*aid 27

您可以在列表中使用SequenceEqual linq方法,因为您的列表实现了IEnumerable.这将验证所有元素是否相同且顺序相同.如果订单可能不同,您可以先对列表进行排序.