我有兩個System.Data.DataRow
對象我想比較的陣列。如何比較PowerShell中的兩個DataRow對象數組?
行有兩列A和B.列A是一個鍵,我想知道哪些行的B列已更改以及哪些行已被添加或刪除。
如何在PowerShell中執行此操作?
我有兩個System.Data.DataRow
對象我想比較的陣列。如何比較PowerShell中的兩個DataRow對象數組?
行有兩列A和B.列A是一個鍵,我想知道哪些行的B列已更改以及哪些行已被添加或刪除。
如何在PowerShell中執行此操作?
我寫了一段腳本,稍後再執行此操作。腳本(Compare-QueryResults.ps1)可用here,您還需要我的Run-SQLQuery腳本(可用here),或者您可以使用您自己的腳本或函數替換它。
基本上,腳本的功能是將每個查詢的結果分開,並將數據行分開,以便每個字段都是它自己的對象。然後它使用比較對象來檢查這些行中的數據之間的差異。它返回一個比較對象,顯示返回的數據之間的所有差異。
結果是一個對象,因此您可以將它們保存到一個變量中,並使用Sort-Object或Format- * cmdlet。
祝你好運。如果您對這些腳本有任何問題,請告訴我,我很樂意帶您瞭解這些腳本。我一直在使用它們進行應用程序測試,通過程序中的不同操作查看哪些行正在被修改。
您是否需要兩個DataRows數組? DataRow對象有一個RowState屬性,它會給你你所需要的。請參閱MSDN文檔:http://msdn.microsoft.com/
要簡單地比較兩個的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
}
}