我有一系列具有以下结构的对象:
structure Disk
{
int UID;
String Computer;
}
Run Code Online (Sandbox Code Playgroud)
计算机可以具有一堆共享磁盘,并且可以在计算机之间共享磁盘.
我想找出所有计算机常用的所有磁盘.例如,我有计算机A,B和C; 磁盘阵列1,2和3.磁盘阵列为{1,A},{1,B},{2,A},{2,B},{2,C},{3,A}.我想要的结果应该是磁盘2,因为它出现在A,B和C上.
有没有有效的方法来实现这一目标?
有多个foreach循环,它是可以实现的,但绝对我想要一个更好的方法.我正在考虑像交集这样的操作,但是在PowerShell中没有找到它.
我试图合并两个哈希表,如果第二个中存在相同的键,则覆盖第一个键值对.
为此,我编写了这个函数,如果第二个哈希表中存在相同的键,则首先删除第一个hastable中的所有键值对.
当我逐行输入Powershell时,它可以工作.但是当我运行整个函数时,Powershell要求我提供(它认为)缺少参数到foreach-object.
function mergehashtables($htold, $htnew)
{
$htold.getenumerator() | foreach-object
{
$key = $_.key
if ($htnew.containskey($key))
{
$htold.remove($key)
}
}
$htnew = $htold + $htnew
return $htnew
}
Run Code Online (Sandbox Code Playgroud)
输出:
PS C:\> mergehashtables $ht $ht2
cmdlet ForEach-Object at command pipeline position 1
Supply values for the following parameters:
Process[0]:
Run Code Online (Sandbox Code Playgroud)
$ ht和$ ht2是包含两个键值对的哈希表,其中一个键值对在两个哈希表中都带有键"name".
知道我做错了什么吗?