Domanda

Ho due matrici di System.Data.DataRow oggetti che voglio confrontare.

Le righe hanno due colonne A e B.La colonna A è una chiave e voglio scoprire a quali righe è stata modificata la colonna B e quali righe sono state aggiunte o eliminate.

Come posso farlo in PowerShell?

È stato utile?

Soluzione

Ho scritto una sceneggiatura per farlo qualche tempo fa.Lo script (Compare-QueryResults.ps1) è disponibile Qui e avrai anche bisogno del mio script Run-SQLQuery (disponibile Qui) oppure puoi sostituirlo con uno script o una funzione personalizzata.

Fondamentalmente, ciò che fa lo script è prendere i risultati di ciascuna delle tue query e suddividere le righe di dati in modo che ogni campo sia il proprio oggetto.Quindi utilizza Compare-Object per verificare eventuali differenze tra i dati in quelle righe.Restituisce un oggetto di confronto che mostra tutte le differenze tra i dati restituiti.

I risultati sono un oggetto, quindi puoi salvarli in una variabile e utilizzare Sort-Object o i cmdlet Format-* con essi.

Buona fortuna.Se hai problemi con gli script, faccelo sapere, sarò felice di guidarti attraverso di essi.Li ho usati per testare le applicazioni, vedendo quali righe vengono modificate da diverse azioni in un programma.

Altri suggerimenti

Per confrontare semplicemente due System.Data.DataRow, puoi fare qualcosa del genere:

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

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

Hai bisogno di due array di DataRows?l'oggetto DataRow ha una proprietà RowState che ti fornirà ciò di cui hai bisogno.Consulta i documenti MSDN: http://msdn.microsoft.com/

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top