2012-05-04 92 views
4

(我知道這聽起來像一個重複的,但聽我把話說完)什麼是PowerShell相當於LINQ的選擇?

考慮下面的代碼,如果Select-Object這裏相當於LINQ的Select,輸出應該是@("o", "n", "e")

"one", "two" | %{$_.GetCharArray()} | select -first 1 

然而,由於輸出是"o",這告訴我Select-Object實際上與LINQ的SelectMany相同,而不是Select

這麼多的問題是:有沒有直接等同於Select在PowerShell中(即一個不會在管道合併收藏。)

+0

並不是每個人都熟悉Linq。如果你可以發佈你擁有的東西和你需要的例子,這將大大增加你獲得正確答案的機會 –

+0

@ user978511 - 我的最後一句話幾乎涵蓋了它(也就是說,我正在尋找一些沒有合併的東西兩個序列合併爲一個序列)。儘管羅曼的回答幾乎涵蓋了它。 –

回答

8

這不是關於select而是約展開由ToCharArray()獲得並送至管道陣列。爲了使用標準select獲得預期的結果,我們應該防止展開。這通常是通過使用一元運算符,來完成的,該運算符返回包含單個項目的數組。在我們的例子中,這些項目就是這些數組。他們沒有展開,他們被送到管道,因爲他們是。因此,select -first 1選擇第一個項目是3個項目的數組。

"one", "two" | %{, $_.ToCharArray()} | select -first 1 

這給出3項:o,n,e。

+0

非常好,就是我在找的東西! –

+0

請記住,LINQ管道的工作方式與PowerShell的管道不同。 – JasonMArcher

0

你可以看看廣告的Josh Einstein

工作加載模塊後,您可以使用類似的.NET的LINQ sintax在PowerShell中

相關問題