什么是PowerShell相当于LINQ的Select?

时间:2012-05-04 03:33:03

标签: powershell

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

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

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

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

很多问题是:在PowerShell中是否有直接等同于Select(即不会合并管道中的集合的那个)

2 个答案:

答案 0 :(得分:8)

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

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

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

答案 1 :(得分:0)

您可以查看Josh Einstein

的作品

加载模块后,您可以在powershell中使用类似的.net LINQ sintax