2013-05-09 50 views
2

我有一個我想要過濾的鋸齒狀數組$ h。要做到這一點的方法之一是在下面的例子中使用管道的管道,如:PowerShell - 在流水線中使用流水線的鋸齒陣列過濾

$h = ((‘a’,’b’,’a’), (‘c’,’d’), (‘a’, ‘f’)) 
$h | foreach {$_ | Where-Object {$_ -Like 'a'} } | foreach { if ($_.Count -gt 0) {<% DO SOMETHING %> }} 

正如你所看到的,我想在foreach {}語句啓動一個新的管道,希望它不會干涉與外部管道,但它確實。輸出不再是鋸齒狀陣列,而只是一個由字符串組成的一維數組:(‘a’,’a’,’a’)

我想看到的是((‘a’,’a’),’a’)

實際上,'a','b'等是具有屬性的自定義對象,以鋸齒陣列$ h的數組分組。

什麼是最優雅的方法來解決這個問題?

回答

3

這是爲您解決嗎?我刪除了[0],因爲我沒有看到它的用途。我還相信,多個結果在使用,)外陣列交付:

$h = ((‘a’,’b’,’a’), (‘c’,’d’), (‘a’, ‘f’)) 
$h | foreach { ,($_ | Where-Object {$_ -Like 'a'}) } | foreach { if ($_.Count -gt 0) {<% DO SOMETHING %> }} 
+0

'[0]'我放在那裏,以模擬「屬性」,但之後刪除它,因爲它似乎令人困惑。不管怎樣,謝謝。 ','現在看起來非常明顯。 – 2013-05-09 10:00:16