我有3个对象数组。它们看起来像这样:
$arr1
,$arr2
:具有(ID
,filename
,size
等属性的对象。$arrlink
:具有(file1ID
,file2ID
,misc等属性的对象。这链接了上述两个对象我需要做的是将它们组合成一个数组,以便将其写入CSV。需要将3与File1ID
和File2ID
链接到其他2个数组中的ID
列。我需要能够选择我想要的属性。这是一个例子
$arr1[0] = {1,"c:\filename1.txt",1000....}
$arr1[1] = {2,"c:\filename2.txt",2000....}
$arrlink[0] = {1,2,"aaaa")
期望的结果:
newarray[0] = {"c:\filename1.txt", "c:\filename2.txt", "aaaa"}
我知道我可以通过这样做,但是想知道是否有更简单/更直接的方式。
当然,每个数组中都有很多项,但它们都以1对1的关系链接。
答案 0 :(得分:1)
我用这个结束了。它可以节省大量的输入,如果我修改底层对象则不需要修改(只要我单独留下链接的字段)。
$arrOutput = @()
foreach($a in $arrMatch)
{
$objOut = New-Object PsObject
$a.psobject.properties | % { $objOut | Add-Member -MemberType $_.MemberType -Name $_.Name -Value $_.Value}
$arrS1[$a.file1].psobject.properties | % { $objOut | Add-Member -MemberType $_.MemberType -Name ($_.Name + "_1") -Value $_.Value}
$arrS2[$a.file2].psobject.properties | % { $objOut | Add-Member -MemberType $_.MemberType -Name ($_.Name + "_2") -Value $_.Value}
$arrOutput+= $objOut
}