什么是PowerShell相当于LINQ的Select?

Ric*_*lay 4 powershell

(我知道这听起来像重复,但听我说)

给定以下代码,如果Select-Object等效于LINQ Select,则输出应为@("o", "n", "e")

"one", "two" | %{$_.GetCharArray()} | select -first 1
Run Code Online (Sandbox Code Playgroud)

但是,由于输出是"o",这告诉我Select-Object实际上行为与LINQ相同SelectMany而不是Select.

很多问题是:Select在PowerShell中是否存在直接等价物(即,不会合并管道中的集合的那个)

Rom*_*min 8

这不是关于select而是关于展开由ToCharArray()管道获得并发送到管道的数组.为了使用标准获得预期结果,select我们应该防止展开.这通常通过使用一元运算符来完成,该运算符,返回具有单个项的数组.在我们的例子中,这些项目是数组.它们没有展开,它们按原样发送到管道.因此,select -first 1选择第一个项目,它是一个包含3个项目的数组.

"one", "two" | %{, $_.ToCharArray()} | select -first 1
Run Code Online (Sandbox Code Playgroud)

这给出了3个项目:o,n,e.