我正在使用Kellerman .Net Object Comparison来比较C#DataTables。它对我来说效果很好。
然而,我对如何忽视而感到难过:
在我需要运行的大多数DataTable比较中,数据类型可以不同,但是在转换或转换后内容是相同的。通常我会在左侧获得一个输入字符串,这是右侧的整数。
另外,我通常会得到不同的列名。
我尝试过类似的事情:
config.AttributesToIgnore.Add( dt.Columns[0].ColumnName ) ;
config.AttributesToIgnore.Add( typeof(dt.Columns[0].DataType) );
显然,这不起作用,我坚持精确定位我想要忽略的确切类型以及添加元素所需的预期数据类型。
IgnoreObjectTypes对我来说没用,因为它只检查DataTables是DataTables,而不是DataTable本身的列数据类型。
描述我的问题的最佳方式是查看下表
<style>
.nomatch{
background-color: #ff9999;
}
.match{
background-color: #99ff99;
}
</style>
<table>
<tr><td class="nomatch">System.Int32</td><td class="match">System.String</td><td class="match">System.Int32</td><td style="border-left: 2px dotted blue; " class="nomatch">System.String</td><td class="match">System.String</td><td class="match">System.Int32</td></tr>
<tr><td class="match">Year</td><td class="match">Region</td><td class="nomatch">Count</td><td style="border-left: 2px dotted blue; " class="match">Year</td><td class="match">Region</td><td class="nomatch">Column1</td></tr>
</table>
我用红色突出显示的元素被比较.Net对象标记为差异,但我想忽略它们,只关注数据本身。