确定两个数据表的最快方法是否包含相同的数据?

时间:2010-10-15 04:54:43

标签: c# .net unit-testing datatable

我想验证2个数据表包含相同的数据(用于单元测试),但不幸的是,Assert.AreEqual不起作用,似乎每个数据表包含使其引用不相等的唯一元数据。

我该怎么做?

2 个答案:

答案 0 :(得分:4)

如果您想知道它们是否不同:

我会按其键对DataTable进行排序,然后同时迭代两者。如果相同位置的键不同,则表示表格不同。如果键相同,则比较该行的表的其他列。

如果您想了解它们之间的差异:

您可能还想查看DataTable的Merge方法。

答案 1 :(得分:0)

鉴于您正在讨论SQL服务器并且您在同一服务器上有2个数据库,您可以为每个表运行跨数据库EXCEPT以获得差异计数,如下所示:

SELECT COUNT(*) 
FROM (
    SELECT * FROM database1.dbo.table1
    EXCEPT
    SELECT * FROM database2.dbo.table1
) AS diff

我认为这是最快的方式,但我又对你的设置做了很多假设:)