gpt4 book ai didi

arrays - PowerShell 中的并集和交集?

转载 作者:行者123 更新时间:2023-12-03 06:44:48 25 4
gpt4 key购买 nike

我有一个具有以下结构的对象数组:

structure Disk
{
int UID;
String Computer;
}

一台计算机可能有一堆共享磁盘,并且一个磁盘可以在计算机之间共享。

我想找出所有计算机共有的所有磁盘。比如我有电脑A、B、C;磁盘 1、2 和 3。磁盘阵列为{1,A}、{1,B}、{2,A}、{2,B}、{2,C}、{3,A}。我想要的结果应该是磁盘2,因为它出现在A、B、C上。

有没有有效的方法来实现这一目标?

使用多个 foreach 循环是可以实现的,但我肯定想要一个更好的方法。我正在考虑诸如交集之类的操作,但在 PowerShell 中没有找到它。

最佳答案

假设$arr是数组,你可以这样做:

$computers = $arr | select -expand computer -unique
$arr | group uid | ?{$_.count -eq $computers.count} | select name
<小时/>

一般来说,我会像这样在 Powershell 中处理并集和交集:

$a = (1,2,3,4)
$b = (1,3,4,5)
$a + $b | select -uniq #union
$a | ?{$b -contains $_} #intersection

但是对于您所问的问题,上述解决方案效果很好,而不是真正涉及术语标准定义中的并集和交集。

更新:

我写了pslinq它提供了Union-ListIntersect-List,有助于使用Powershell实现集合并集和交集。

关于arrays - PowerShell 中的并集和交集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8609204/

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