function ArrayToHash
{
Param($array, $indexproperty)
$hash = @{}
$array | %{$hash[$_.$indexproperty] = $_}
$hash
}
This should turn any enumerable collection into a hash using the named
property as an index. For example, you can collect filesystem objects from
the current location and use their FullName property as the index like this:
ArrayToHash (gci) FullName
or, to collect them into a variable:
$h = ArrayToHash (gci) FullName
"RickB" <rbielaws@xxxxxx> wrote in message
news:9853d408-c430-410b-a32c-d34ec51a51cc@xxxxxx
> I'm looking for the simplest way to turn an array of custom objects
> into a hashtable with some particular property of the custom object
> being the key.
>
> So, given some function that emits an array of objects
>
> function myArray {
> 1..10|
> %{$a=$_;""|
> select-object name,even,sqr|
> %{$_.name = "a$a"
> $_.even = [int]($a/2)*2 -eq $a
> $_.sqr = $a*$a
> $_}}}
>
> What function f will result in
>
> PS 1> $h = f $(myArray) name
> PS 2> $h.a3.even
> False