2008-08-22 84 views

回答

4

我写了一段脚本,稍后再执行此操作。脚本(Compare-QueryResults.ps1)可用here,您还需要我的Run-SQLQuery脚本(可用here),或者您可以使用您自己的脚本或函数替换它。

基本上,脚本的功能是将每个查询的结果分开,并将数据行分开,以便每个字段都是它自己的对象。然后它使用比较对象来检查这些行中的数据之间的差异。它返回一个比较对象,显示返回的数据之间的所有差异。

结果是一个对象,因此您可以将它们保存到一个变量中,并使用Sort-Object或Format- * cmdlet。

祝你好运。如果您对这些脚本有任何问题,请告诉我,我很乐意带您了解这些脚本。我一直在使用它们进行应用程序测试,通过程序中的不同操作查看哪些行正在被修改。

0

您是否需要两个DataRows数组? DataRow对象有一个RowState属性,它会给你你所需要的。请参阅MSDN文档:http://msdn.microsoft.com/

1

要简单地比较两个的System.Data.DataRow,你可以做这样的事情:

foreach ($property in ($row1 | Get-Member -MemberType Property)) { 
    $pName = $property.Name 

    if ($row1.$pName -ne $row2.$pName) { 
     Write-Host "== $pName ==" 
     $row1.$pName 
     $row2.$pName 
    } 
}