Cli*_*ive 2 datatable powershell
在PowerShell中,if$dt是一个数据表,我习惯用它foreach()来进行逐行操作。例如...
foreach ($tmpRow in $dt) {
Write-Host $tmpRow.blabla
}
Run Code Online (Sandbox Code Playgroud)
我只想获得第一行(n列)。我可以引入一个计数器$i,并在第一次迭代时中断 foreach 循环,但这看起来很笨重。有没有更直接的方法来实现这一目标?
对于已经在内存中的集合(数组),使用索引,即[0]:
注意:通常,$dt[0]应该足够了,但在这种情况下,索引必须应用于.Rows属性,正如Theo建议的那样:
$dt.Rows[0].blabla鉴于 PowerShell通过枚举存储在其属性中的实例来自动枚举a - 无论是在管道中还是在循环中,如您的代码中 -需要显式指定索引是令人惊讶的。System.Data.DataTableSystem.Data.DataRow.Rowsforeach.Rows
$dt一个System.Data.DataTable实例,$dt[0]实际上与它本身相同$dt,因为在这种情况下,PowerShell 考虑$dt单个对象,并且通常支持对此类单个对象进行索引,以便统一处理标量和数组- 请参阅此答案以获取背景信息。对于命令输出,请使用Select-Object -First 1. 使用以下示例Invoke-SqlCmd
(Invoke-SqlCommand ... | Select-Object -First 1).blabla
注意:由于Invoke-SqlCommand默认情况下输出单个System.Data.DataRow实例(一一对应),因此您可以直接访问.blabla结果的属性。
使用的优点Select-Object -First 1是使管道短路并在收到第一个输出对象后返回,从而无需检索更多对象。
| 归档时间: |
|
| 查看次数: |
8237 次 |
| 最近记录: |