add-type -Language CSharpVersion3 -TypeDefinition @"
public class pack_code
{
public pack_code() {}
public string code { get; set; }
public string type { get; set; }
}
"@
$a = New-Object pack_code
$a.code = "3"
$a.type = "5"
$b = New-Object pack_code
$b.code = "2"
$b.type = "5"
$c = New-Object pack_code
$c.code = "2"
$c.type = "5"
$d = New-Object pack_code
$d.code = "1"
$d.type = "1"
$codes = New-Object 'System.Collections.Generic.List[object]'
$codes.add($a)
$codes.add($b)
$codes.add($c)
$codes.add($d)
有没有办法选择与 $codes 不同的对象并选择 type 等于 1 的对象?如何将 LINQ 与 PowerShell 结合使用?
最佳答案
对于不同的情况,请使用带有 Unique 参数的 Select-Object
cmdlet(别名为 Select
),例如:
PS> 1,2,3,4,4,2 | Select-Object -Unique
1
2
3
4
要进行过滤,请使用 Where-Object
cmdlet(别名为 Where
和 ?
):
PS> $codes | where {$_.Type -eq '1'}
对于 LINQ,您不能在 PowerShell 中使用 LINQ 运算符,因为 PowerShell 不支持调用对 LINQ 至关重要的通用 .NET 方法或静态扩展方法。
编者注:PSv3+现在确实支持这些东西。
关于linq - 在 PowerShell 中查询 LINQ 样式的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2869967/