gpt4 book ai didi

powershell - 在powershell中使用通用列表时如何RemoveAll

转载 作者:行者123 更新时间:2023-12-04 13:24:12 28 4
gpt4 key购买 nike

如果我使用这样的通用列表:

$foo = New-Object 'system.collections.generic.list[object]'
$foo.Add((New-Object PSObject -Property @{ Name="Foo1"; }))
$foo.Add((New-Object PSObject -Property @{ Name="Foo2"; }))
$foo.Add((New-Object PSObject -Property @{ Name="foo3"; }))

如何应用 List<T> 的 RemoveAll() 方法?是否可以使用谓词?例如,如何删除所有以大写“F”开头的项目?

最佳答案

我认为唯一的方法是不使用 System.Predicate这需要委托(delegate)(对不起,但我真的不知道如何在 powershell 中创建匿名委托(delegate))并使用 where-object 子句。

在我的示例中,我将结果重新分配给相同的 $foo需要再次转换为 list<T> 的变量.

如果结果计数只有一个,为了避免错误,它需要“,”来始终创建 array值(value)

[system.collections.generic.list[object]]$foo =  , ( $foo | ? {$_.name  -cnotmatch "^f" })

编辑:

经过一些测试,我发现如何使用 lambda 表达式使用 powershell 脚本 block :
$foo.removeAll( { param($m)  $m.name.startswith( 'F', $false , $null)  })

这是使用需要 System.Predicate的方法的正确方法在PowerShell中

关于powershell - 在powershell中使用通用列表<T>时如何RemoveAll,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10503184/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com