piątek, 16 maja 2014

Odwracanie hashtable w PS

Postanowiłem napisać odwracanie hashtable. Ta operacja jest nazywana pivotem. Dlaczego to zrobiłem? Przedstawię przykład. Jak stworzysz kolekcję hashtablicy to w PS źle (moim zdaniem) wyświetla się:
$hashtables = @()
$hashtables += @{FName="Arek";  Number=18}
$hashtables += @{FName="Gosia"; Number=1}
$hashtables += @{FName="Dawid"; Number=9}
Wynik tych kolekcji hashowania jest następujący:
Name                    Value                                                                                        
----                    ----                                                                                    
Number                  18                                                                                           
FName                   Arek                                                                                         
Number                  1                                                                                            
FName                   Gosia                                                                                        
Number                  9                                                                                            
FName                   Dawid  

Potrzebna będzie nam funkcja odwracanie hastable:
function Pivot-Hashtable
{
    param([hashtable[]]$hashes)

    $names = ($hashes.keys | group).name

    $hashes | % {
        $hash = $_
        $row = New-Object PSObject
        foreach($name in  $names)
        {
             $row | Add-Member  -MemberType NoteProperty -Name $name -Value $hash[$name]
        }
        return $row
    } 
}
Rezultat jest poniżej:
Pivot-Hashtable $hashtables


Number FName                                                         
------ ----                                                         
18     Arek                                                         
1      Gosia                                                        
9      Dawid  

Brak komentarzy:

Prześlij komentarz