如何删除在 powershell 脚本中使用 foreach 添加的哈希表中的重复元素?
How to remove duplicated elements on hashtable that were added with foreach in powershell script?
我有一个包含重复元素的数组。我希望使用字典来删除重复的元素。这是我的代码块:
$dictionary = [ordered]@{}
ForEach ($item In $pkg){
$dictionary.Add($item.Id, $item.Version)
}
字典仍然有重复的元素,但是像这样添加时:
$dictionary.Add("NHibernate", "4.0.4.4000")
$dictionary.Add("NHibernate", "4.0.4.4000")
这是不允许的。我究竟做错了什么?
数组是这样做的结果
@( Get-Project -All | ? { $_.ProjectName } | % { Get-Package -ProjectName $_.ProjectName } ) | ? { $_.LicenseUrl } | ...
在 Visual Studio 中的包管理器控制台中。
如果您不想覆盖已经存在的 keys
的 values
,您可以在将 key
添加到 hashtable
之前检查它是否已经存在(再次):
ForEach ($item In $pkg){
if( -not $dictionary.Item($item.Id)){
$dictionary.Add($item.Id, $item.Version)
}
}
如果要允许相同的键覆盖字典中已有的值(最后一项 'wins'),请使用以下语法:
foreach ($item In $pkg){
$dictionary[$item.Id] = $item.Version
}
如果您想跳过具有相同键的项目,请使用:
foreach ($item In $pkg) {
if (!($dictionary.Contains($item.Id))) {
$dictionary.Add($item.Id, $item.Version)
}
}
我有一个包含重复元素的数组。我希望使用字典来删除重复的元素。这是我的代码块:
$dictionary = [ordered]@{}
ForEach ($item In $pkg){
$dictionary.Add($item.Id, $item.Version)
}
字典仍然有重复的元素,但是像这样添加时:
$dictionary.Add("NHibernate", "4.0.4.4000")
$dictionary.Add("NHibernate", "4.0.4.4000")
这是不允许的。我究竟做错了什么?
数组是这样做的结果
@( Get-Project -All | ? { $_.ProjectName } | % { Get-Package -ProjectName $_.ProjectName } ) | ? { $_.LicenseUrl } | ...
在 Visual Studio 中的包管理器控制台中。
如果您不想覆盖已经存在的 keys
的 values
,您可以在将 key
添加到 hashtable
之前检查它是否已经存在(再次):
ForEach ($item In $pkg){
if( -not $dictionary.Item($item.Id)){
$dictionary.Add($item.Id, $item.Version)
}
}
如果要允许相同的键覆盖字典中已有的值(最后一项 'wins'),请使用以下语法:
foreach ($item In $pkg){
$dictionary[$item.Id] = $item.Version
}
如果您想跳过具有相同键的项目,请使用:
foreach ($item In $pkg) {
if (!($dictionary.Contains($item.Id))) {
$dictionary.Add($item.Id, $item.Version)
}
}