如何在PowerShell中比较两个DataRow对象数组?

时间:2020-03-05 18:41:55  来源:igfitidea点击:

我有两个要比较的System.Data.DataRow对象数组。

这些行有两列A和B。列A是键,我想找出哪些行的B列已更改以及哪些行已添加或者删除。

如何在PowerShell中执行此操作?

解决方案

回答

我们是否需要两个DataRows数组? DataRow对象具有RowState属性,该属性将为我们提供所需的内容。请参阅MSDN文档:http://msdn.microsoft.com/

回答

我写了一个脚本来做这个。脚本(Compare-QueryResults.ps1)在此处可用,我们还将需要我的Run-SQLQuery脚本(在此处可用),或者我们可以用自己的脚本或者函数替换它。

基本上,脚本所做的是将每个查询的结果分解为多个数据行,以便每个字段都是其自己的对象。然后,它使用Compare-Object检查那些行中的数据之间是否有任何差异。它返回一个比较对象,该对象显示返回的数据之间的所有差异。

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

祝你好运。如果我们对脚本有任何疑问,请告诉我,我将很高兴向我们介绍这些脚本。我一直在使用它们进行应用程序测试,看看程序中的不同动作正在修改哪些行。