linq - 在 PowerShell 中查询 LINQ 样式的列表

标签 linq powershell

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/

相关文章:

c# - 如果字符串可解析为 int,则选择解析 int

c# - 如何在 XDocument 元素的名称中使用 ':' 字符?

powershell - IX509Extension XCN编码?

powershell - 将控制台输出写入文件 - 文件意外为空

c# - Linq 用于通过比较 2 个属性值从列表 1 中选择存在于列表 2 中的元素

c# - LINQ - 从 ObjectModel 列表中获取 ID 列表时遇到问题

PowerShell 在创作者更新后显示奇怪的字符

.net - 将数据写入 Excel 2007/PowerShell 中的单元格

php - PHP 脚本在 Powershell 写入文件时尝试读取文件的问题

c# - 使用 group by 时如何对 Linq 中两个日期时间之间的减法时间跨度求和?