【发布时间】:2018-06-30 06:27:24
【问题描述】:
我有这个代码
function get-data()
{
$rec=[PSCustomObject]@()
$DLGP = "" | Select "Name","Grade","Score"
foreach($record in $data)
{
$DLGP.Name=$record.name
$DLGP.Grade=$record.grade
$DLGP.Score=$record.score
$rec += $DLGP
}
return $rec
}
$mydata=get-data
$mydata | Export-Csv -Path $outputPath -NoTypeInformation
问题是,数据没有按照我添加到$rec的顺序导出
如何按添加顺序导出?
【问题讨论】:
-
默认情况下,
[PSCustomObject]是无序的。由于 Powerschell 版本 4 或 5 我猜有订购的自定义对象。只需在[PSCutomObject]前面添加[ordered].... 就像这样:[ordered][PSCostomObject] -
@Olaf:
[pscustomobject]实例始终按定义顺序枚举其属性。它是 hashtables,其条目以无保证的顺序枚举; PSv3 引入了[ordered] @{ ... }以允许定义有序哈希表文字,其条目也按定义顺序枚举,并且还允许将哈希表文字转换为[pscustomobject],在这种情况下[ordered]是隐含 - 在PSv2 中 - 这样演员阵容根本不起作用(没有操作)。但是,OP 的问题与会员订购无关 - 请参阅我的回答。[ordered]仅在@{ ... }之前有效。