Powershell array .contains 方法似乎没有像宣传的那样工作
Powershell array .contains method doesn't seem to work as advertised
PS C:\TEMP> cat list.csv
132
456
789
PS C:\TEMP> $arrayfromcsv = Import-CSV -header Values -path "c:\TEMP\list.csv"
PS C:\TEMP> $arrayfromcsv.Length
3
PS C:\TEMP> $arrayfromcsv[2]
Values
------
789
PS C:\TEMP> $arrayfromcsv.Contains("789")
False
请告诉我这里出了什么问题...我怀疑我错过了一些明显的东西,这表明我对 Powershell 不熟悉...
问题是在对象数组上使用 .Contains
($arrayfromcsv
而不是 扩展每个对象的值 :$arrayfromcsv.Values
)。
您可以使用 Member-Access Enumeration 访问 $arrayfromcsv
的每个对象的所有 属性 值:
@'
132
456
789
'@ | ConvertFrom-Csv -Header Values | Set-Variable csv
$csv.Values.Contains('789') # => True
PS C:\TEMP> cat list.csv
132
456
789
PS C:\TEMP> $arrayfromcsv = Import-CSV -header Values -path "c:\TEMP\list.csv"
PS C:\TEMP> $arrayfromcsv.Length
3
PS C:\TEMP> $arrayfromcsv[2]
Values
------
789
PS C:\TEMP> $arrayfromcsv.Contains("789")
False
请告诉我这里出了什么问题...我怀疑我错过了一些明显的东西,这表明我对 Powershell 不熟悉...
问题是在对象数组上使用 .Contains
($arrayfromcsv
而不是 扩展每个对象的值 :$arrayfromcsv.Values
)。
您可以使用 Member-Access Enumeration 访问 $arrayfromcsv
的每个对象的所有 属性 值:
@'
132
456
789
'@ | ConvertFrom-Csv -Header Values | Set-Variable csv
$csv.Values.Contains('789') # => True