Как я могу пересечь две коллекции с таблицей с ключом из двух частей в PowerShell? - PullRequest
0 голосов
/ 18 июня 2009

У меня есть такие входные данные:

FOO.A
FOO.B
FOO.C

BAR.X
BAR.Y

и таблица правил, например:

   (FOO = A, BAR = X) => 1  # match
   (FOO = A, BAR = Z) => 2  # no match
   (FOO = B, BAR = X) => 3  # match

Я хочу взять входные данные и спросить у таблицы «какие записи соответствуют этим входным данным?» И получить обратно строки 1 и 3.

Я думал об использовании хеш-таблиц, где FOO - это ключ, а значение - это хеш-таблица с BAR в качестве ключа и 1 в качестве значения. Проблема в том, что есть дубликаты ключей.

Какой идиоматический способ написать это в PowerShell?

Производительность не критична: наборы данных невелики.

Ответы [ 2 ]

0 голосов
/ 11 ноября 2010

Просто мысль. Вы проверяли командлет Compare-Object?

0 голосов
/ 18 июня 2009

Вот то, что я пытаюсь использовать, и я думаю, что это будет работать

$table = @(
    @{ 
        Foo = "A"
        Bar = "X
        Value = 1
    },
    @{ 
        Foo = "A"
        Bar = "Y"
        Value = 2
    },
    @{ 
        Foo = "B"
        Bar = "Z"
        Value = 3
    }
)

$table | foreach {
    $row = $_

    $foo = $input.Foos | where {
        $_.Name -eq $row.Foo
    }

    $bar = $input.Bars | where {
        $_.Name -eq $row.Bar
    }

    if ($foo -and $bar) {        
        # processing
    }        
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...