组合变量会导致"...不包含名为"op_Addition"的方法



这几天来一直困扰着我。我习惯于将两个变量连接在一起,例如

$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使用了什么类型的变量,所以这是一个疯狂的猜测。由于12位于双引号之间,因此假定它们是字符串而不是数字。字符串的+被解释为串联。对于数字类型,它是加法。

在处理自定义对象时,添加通常定义不清。对于某些类型,存在默认添加。字符串和数组就是这样。对于其他类型,没有合理的默认值可用。这表示为熟悉的错误消息不包含名为"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

相关内容

最新更新