I needed a simple PowerShell code to generate hash tables with all possible pairs of a given array of strings. There are possibilities to use a similar method in .NET but I used only PowerShell functionality. This is my output:
$inputItems = 'aaa', 'bbb', 'ccc'
$pairItems = @()
$i = 0
foreach ($pairItemFirst in $inputItems)
{
    foreach ($pairItemSecond in ($inputItems | Where-Object -FilterScript { $_ -ne $pairItemFirst }))
    {
        $pairItems +=
        [ordered]@{
            PairNumber = $i
            First  = $pairItemFirst
            Second = $pairItemSecond
        }
    }
    $i++
}
$pairItems
Output:
Name Value ---- ----- PairNumber 0 First aaa Second bbb PairNumber 0 First aaa Second ccc PairNumber 1 First bbb Second aaa PairNumber 1 First bbb Second ccc PairNumber 2 First ccc Second aaa PairNumber 2 First ccc Second bbb
