这几天来一直困扰着我。我习惯于将两个变量连接在一起,例如
$a = "1"
$b = "2"
$c = $a + $b
结果:$c = "12"
我试图将两个变量连接在一起,或者将数据组合在两个变量中,这两个变量恰好是一个数据表,每个变量都有多行或多个条目,所以我只剩下一个表。在我的例子中,我有6个表,每个表有20多个条目,我想把它们合并成一个综合列表。
我的数据中有一列恰好是一个数组:
$d =
column1 : 123
column2 : 456
column3 : 789
column4 : 012
column5 : {345}
column1 : 234
column2 : 457
column3 : 890
column4 : 123
column5 : {}
$e =
column1 : 987
column2 : 654
column3 : 321
column4 : 098
column5 : {765,432}
column1 : 555
column2 : 444
column3 : 333
column4 : 222
column5 : {111,222,333}
column1 : 666
column2 : 777
column3 : 888
column4 : 999
column5 : {000}
我的每个变量的数据结构都是相同的,即列的编号和名称相同。
我已经尝试了很多不同的方法来做到这一点。我的一些值得分享的尝试是:
$f = $d + $e
失败并出现错误:
方法调用失败,因为[System.Management.Automation.PSObject]不包含名为"op_Addition"的方法。
我尝试过:
$f = $d | Select-Object -Property *
$f = $f + $e | Select-Object -Property *
这也导致了与上述相同的错误。
我尝试将数据选择到哈希表中(?(
$f = $d | Select-Object -Property @('*')
但再说一遍,这并没有让我取得任何进展。
我尝试使用-append选项将变量导出到CSV文件,以为我可以再次将其全部导入,所有这些都很好并组合在一起,但这是一场灾难,因为数组的内容丢失了。
在DuckDuckGo/StckOverflow上有几次提到"不包含名为‘op_Addition’的方法",但对于我将表组合在一起的特殊情况则没有。
我不知所措,因为一开始似乎是将两个变量连接在一起的"简单"情况。
这种行为是由动态类型引起的。由于你没有告诉Powershell使用了什么类型的变量,所以这是一个疯狂的猜测。由于1
和2
位于双引号之间,因此假定它们是字符串而不是数字。字符串的+
被解释为串联。对于数字类型,它是加法。
在处理自定义对象时,添加通常定义不清。对于某些类型,存在默认添加。字符串和数组就是这样。对于其他类型,没有合理的默认值可用。这表示为熟悉的错误消息不包含名为"op_Addition"的方法。
组合表的正确方式取决于表的数据类型。作为伪代码,像这样的过程可以工作:
create new table n
for each table t in your result set
copy each row to nt from t
save nt
谢谢你,
事实上,有效的答案是:
$f=@($d($f+=$e