我如何确定 List.Contains 适用于数据表列表
本文关键字:适用于 数据表 列表 Contains List 何确定 | 更新日期: 2023-09-27 18:36:26
如果我有这个:
List<DataTable> listDataTables = functionToAddSomeDataTables();
我想做一个这样的比较:
if(listDataTables.Contains(aDataTable))
{
//do something.
}
我怎么知道它是在比较引用、架构、内容还是上述所有内容?
我是否需要编写自己的 IEquatable.Equals 以确保它正常工作,或者我可以信任内置的 .数据表的平等工作如我所希望的那样?
是否有一般规则或观察来了解何时.包含,或类似的比较是通过参考还是按值?
提前致谢:)
>List<T>.Contains
使用对象的object.Equals(object)
方法。由于DataTable
的文档说它的Equals
是从Object.Equals
继承而来的,所以引用比较的默认Object.Equals
实现是将使用的。如果要通过其他内容进行比较,请使用 LINQ 的 Contains
方法包括该相等比较器。
(例如,比较 DataTable 方法和十进制方法:只有Decimal
列表Equals
在左侧的列表中,并显示"(覆盖 ValueType.Equals(Object).)"而不是"(继承自 Object。
您必须编写自己的 Equals 方法并比较所需的属性。内置(默认)Contains() 方法将检查值类型的值(字符串、int...)和引用类型的引用(您的类是引用类型)