首页 > 解决方案 > 如何查找A(一维数组)是否是B(二维数组)的一部分?

问题描述

我可以诚实地说我已经离开这里了。

范围。我有两个数据库,其中有表。我想比较这些表是否匹配。

我的做法是:

例子:

db1 表 1

db2 表 1

id=1 的行将不生成任何输出,因为它在 db1 table1 中与在 db2 table1 中完全相同。id=2 的行将不会生成任何输出,因为它完全从 db2 table1 中丢失。id=3 的行将产生错误,因为 column2 中的值在两个数据库之间是不同的。

我已经设法从两个数据库和表中提取数据,现在我将它们放在两个不同的变量中(二维数组?)。现在问题来了。

当我将内容写入主机时,db1 table1 看起来像这样:

@{id=1; column1=aa; column2=bb} @{id=2; column1=cc; column2=dd} @{id=3; column1=ee; column2=ff}

... 并为 db2 table1 精简:

@{id=1; column1=aa; column2=bb} @{id=3; column1=ee; column2=aa}

我的想法是做这样的事情:

foreach ($row in $db2table1) {
    if($db1table1.Contains($row)) {
        #all is good
    }
    else {
        #error
   }
}

但它不起作用。想法?

标签: sqlarrayspowershellcontains

解决方案


比较对象使这项任务更容易。您可以执行如下检查:

$check = Compare-Object -ref $db1table1 -dif $db2table1
if ($check) { 
    "Error"
} else {
    "All Good"
}

默认情况下,Compare-Object输出差异仅指示哪个对象具有差异(SideIndicator属性)。如果没有发现差异,则不输出任何内容。-IncludeEqual您可以使用和-ExcludeDifferent参数更改默认行为。


推荐阅读