2

我有 3 个对象数组。它们看起来像这样:

  • $arr1, $arr2 : 具有 ( ID, filename, size, 等) 属性的对象。
  • $arrlink: 具有 ( file1ID, file2ID, misc) 等属性的对象。这链接了上述对象中的 2 个

我需要做的是将它们组合成一个数组,以便将其写入 CSV。这 3 个需要链接:File1ID并链接File2IDID其他 2 个数组中的列。我需要能够选择我想要的属性。这是一个例子

$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 的关系联系在一起。

4

1 回答 1

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
    }
于 2013-04-18T17:33:28.810 回答