Your strategic advantage starts here

A Powershell Array of Hashtables instead of a Multidimensional Array

A Powershell Array of Hashtables instead of a Multidimensional Array

This post provides the benefits of using a Powershell array of hashtables instead of a multidimensional Array.

When scripting and coding a solution we’re often required to read from back-end databases.  Sometimes if we want to reduce the amount of ‘reads’ to the database (if, for example, we know the information isn’t going to change very frequently) or we want faster access by storing the data in-memory, we may choose to write all the information we’ve retrieved from the database into an array.

 

Once we’ve stored the data inside our (multidimensional) array, retrieving a particular record is sometimes an obstacle.  Particularly when we’re using unnamed indexes to reference records and array dimensions.  To circumvent this issue, I like to store my records in an (single dimension) array of hashtables!  This allows me to retrieve records very easily based on specific hashtable names!

$allRecords = @()

$allRecords += (@{ 
						value="alkane1";
						text="solutions1";
						additional="this is some additional data for my record";
						enabled=$true;
					})
				
$allRecords += (@{ 
						value="alkane2";
						text="solutions2";
						additional="this is some additional data for my record";
						enabled=$false;
					})
						
#retrieve selected record from array
$selectedRecord = $allRecords | Where-Object { $_.value -eq "alkane1" }
if ($selectedRecord -ne $null)
{
	write-host $selectedRecord.value
	write-host $selectedRecord.text
	write-host $selectedRecord.additional
	write-host $selectedRecord.enabled
}

 

Related Posts
Leave a Reply
Give us a call

Available from 9am to 8pm, Monday to Friday.

Send us a message

Send your message any time you want.

Our usual reply time: 1 Business day
Give us a call

Available from 9am to 8pm, Monday to Friday.

Send us a message

Send your message any time you want.

Our usual reply time: 1 Business day