Powershell array .contains 方法似乎没有像宣传的那样工作

Jea*_*ier 2 csv arrays powershell

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
Run Code Online (Sandbox Code Playgroud)

请告诉我这里出了什么问题...我怀疑我错过了一些明显的东西,暴露了我对 Powershell 的不熟悉...

San*_*zon 6

问题在于使用.Contains对象数组($arrayfromcsv而不是扩展每个对象的值:)$arrayfromcsv.Values

您可以使用成员访问枚举来访问每个对象的所有属性值$arrayfromcsv

@'
132
456
789
'@ | ConvertFrom-Csv -Header Values | Set-Variable csv

$csv.Values.Contains('789') # => True
Run Code Online (Sandbox Code Playgroud)

  • 很好,但是为什么要让“Set-Variable”退出准退休状态呢?:) @zett42:确实如此,而且写得也很好。 (3认同)
  • 感谢您的帮助,@MathiasR.Jessen。 (3认同)
  • 是的,感谢 Mathias 和 mklement0,同意@zett42 ;) (2认同)
  • @mklement0 哈哈,我不知道为什么我养成了使用 `sv` 的习惯,可能是因为我总是忘记在此处字符串之前进行变量赋值:p (2认同)