PowerShell: Combine two hash tables

前端 未结 1 1547
一生所求
一生所求 2020-12-11 21:31

I have two hash tables created from data from two different XML files. What I would like to do is combine the two tables into a single hash table based on a common value in

相关标签:
1条回答
  • 2020-12-11 21:43

    Given :

    f1.csv is :

    SkuID,SkuStatusCode,QuantityOnHand
    1828,True,441 
    3022,True,325 
    2981,True,214 
    2989,True,842 
    

    f2.csv is :

    SkuID,RegularPrice,CurrentPrice
    1828,49.99,48.99
    3022,25,19.99
    2981,45,39.99
    2989,28,18.99
    

    Try this far-fetched solution, not so good as join-object because you need to know the properties. You also have to be careful here with + operator between $a and $b which is not commutative it changes the group order :

       $a = Import-Csv C:\temp\f1.csv
       $b  = Import-Csv C:\temp\f2.csv
       $b + $a | Group-Object -Property skuId  | 
    % {$x= New-Object -TypeName psCustomObject -Property 
    @{SkuID=$_.name;RegularPrice=$_.group[0].RegularPrice;
    CurrentPrice=$_.group[0].CurrentPrice;
    SkuStatusCode=$_.group[1].SkuStatusCode;QuantityOnHand=$_.group[1].QuantityOnHand};
     $x}
    

    for me it gives :

    QuantityOnHand : 441 
    RegularPrice   : 49.99
    SkuStatusCode  : True
    SkuID          : 1828
    CurrentPrice   : 48.99
    
    QuantityOnHand : 325 
    RegularPrice   : 25
    SkuStatusCode  : True
    SkuID          : 3022
    CurrentPrice   : 19.99
    
    QuantityOnHand : 214 
    RegularPrice   : 45
    SkuStatusCode  : True
    SkuID          : 2981
    CurrentPrice   : 39.99
    
    QuantityOnHand : 842 
    RegularPrice   : 28
    SkuStatusCode  : True
    SkuID          : 2989
    CurrentPrice   : 18.99
    
    0 讨论(0)
提交回复
热议问题