我可以用我的类的实例填充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#的灰色区域,您在两个极端中都错失了糖,必须自己制作?
您可以使用[scriptblock]
作为谓词:
$packages.FindIndex({$args[0].ID -eq 'C'})
# or
$packages.FindIndex({param($item) $item.ID -eq 'C'})