Создайте пользовательский объект из двух объектов - PullRequest
0 голосов
/ 20 июня 2019

У меня есть два объекта:

PropID     ValueX
---------- ------------
      8039 xxxx
      8041 xxxx
      8042 xxxx
PropID     ValueY
---------- -------
      8039 yyyy
      8041 yyyy
      8042 yyyy

Я хочу получить новый объект, содержащий PropName, ValueX, ValueY (на основе PropID), например:

PropID     ValueX       ValueY
---------- ------------ ----------
      8039 xxxx         yyyy
      8041 xxxx         yyyy
      8042 xxxx         yyyy

Я знаю, что это просто, но я ржавый в это утро и мог бы использовать руку помощи.

* Не то же самое, что В Powershell, какой лучший способ объединить два стола в один?, поскольку я не хочу использовать какой-либо сторонний командлет, а только собственный PowerShell.

1 Ответ

2 голосов
/ 20 июня 2019

Это просто пример использования $o1 в качестве массива объектов, который содержит ValueX и $o2 в качестве массива объектов, который содержит ValueY.Может быть, это поможет вам начать в желаемом направлении.

$o1 = @( [pscustomobject]@{
    propID = 1
    ValueX = 334
    }) -as [collections.generic.list[object]]
$o1.add([pscustomobject]@{
    propID = 3
    ValueX = 34324
    })
$o1.add([pscustomobject]@{
    propID = 2
    ValueX = 534
    })

$o2 = @( [pscustomobject]@{
    propID = 1
    ValueY = 867
    }) -as [collections.generic.list[object]]
$o2.add([pscustomobject]@{
    propID = 2
    ValueY = 873
    })
$o2.add([pscustomobject]@{
    propID = 3
    ValueY = 89722
    })

$newobject = $o1 | Foreach-Object { 
            $_.psobject.copy()
           }
$newobject |
    Foreach-Object {
        $obj = $_
        $_ | Add-Member -MemberType NoteProperty -Name ValueY -Value $o2.where{$_.propid -eq $obj.propid}.ValueY
    }
...