我可以Generic.List
用我的类的实例填充,每个实例在ID属性中都具有唯一的值,如下所示。
$packages = [System.Collections.Generic.List[object]]::New()
class Package {
# Properties
[String]$ID
# Constructor
Package ([String]$id) {
$this.ID = $id
}
}
foreach ($i in 65..90) {
$packages.Add([Package]::New("$([char]$i)"))
}
现在,我要沿的行获取特定项目的索引$packages.IndexOf('C')
。但是在C#中执行此操作似乎需要使用lambda,而PowerShell似乎不支持该功能。我宁愿不必初始化我自己的索引变量,也不需要遍历列表中的所有项目以检查其ID并逐步增加索引。但是,也许这是仅在使用本机PS cmdlet的PowerShell和仅使用C#的灰色区域,您在两个极端中都错失了糖,必须自己做?
您可以使用a[scriptblock]
作为谓词:
$packages.FindIndex({$args[0].ID -eq 'C'})
# or
$packages.FindIndex({param($item) $item.ID -eq 'C'})
假设您的包裹ID是唯一的,请考虑使用字典而不是列表:
$packages = [System.Collections.Generic.Dictionary[string,Package]]::new([StringComparer]::InvariantCultureIgnoreCase)
class Package {
# Properties
[String]$ID
# Constructor
Package ([String]$id) {
$this.ID = $id
}
}
foreach ($i in 65..90) {
$ID = "$([char]$i)"
$packages.Add($ID, [Package]::new($ID))
}
现在,您无需担心商品的位置,现在,您只需按ID删除商品即可:
$wasRemoved = $packages.Remove("C")
Remove()
$true
当成功删除条目$false
时,找不到键时返回
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句