gpt4 book ai didi

powershell - 如何在PowerShell中比较结构

转载 作者:行者123 更新时间:2023-12-03 01:17:56 24 4
gpt4 key购买 nike

我在PowerShell中遇到问题。我使用旧版应用程序,并且它们使用结构。我想使用其他东西,但这将需要大量工作,因为该结构在代码库中无处不在。

问题是我有很多结构的数组。这些结构包含两个字符串,让我们将它们称为stringA和stringB。只有stringA才能确定两个结构是否相等。我想删除重复项。通常,我是通过将对象放入HashSet或通过执行代码示例中的操作来实现的。我该如何使用结构?我只想比较stringA。

# This is how I retrieve the array
[myStruct[]]$myArray = SomeMethodThatGivesMeAnArray

# The way I remove duplicates when working with string arrays.
$myArray = $myArray | Select -Uniq

# The struct
add-type @"
public struct myStruct {
public string stringA;
public string stringB;
}
"@

最佳答案

您仍然可以使用类似于字符串数组重复卸妆的代码。您可以将Sort-Object cmdlet与-Unique-Property参数一起使用:

$uniqueArray = $myArray | Sort-Object -Unique -Property StringA

就排序数组的成本而言,这确实增加了一些开销,但是它将返回由 stringA的唯一值组成的结构数组。请注意,对于给定的 myStruct.stringA值,这将返回原始数组中第一个遇到的结构。

试试看
[Namespace.myStruct[]]$myArray = @([Namespace.myStruct]@{stringA="a";stringB="b"},[Namespace.myStruct]@{stringA="a";stringB="FFF"},[Namespace.myStruct]@{stringA="b";stringB="b"},[Namespace.myStruct]@{stringA="b";stringB="Other String"})
$uniqueArray = $myArray | Sort-Object -Unique -Property StringA
$myArray将保存:
stringA  stringB                                                                                   
------- -------
a b
a FFF
b b
b Other String
$uniqueArray将保存:
stringA stringB
------- -------
a b
b b

关于powershell - 如何在PowerShell中比较结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24633974/

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