制作一个像这样的数组,它代表我正在寻找的内容:
$array = @(1..50000).foreach{[PSCustomObject]@{Index=$PSItem;Property1='Hello!';Property2=(Get-Random)}}
Run Code Online (Sandbox Code Playgroud)
获取索引属性“43122”的项目的最快方法是什么?
我有一些想法,但我觉得必须有一种更快的方法:
measure-command {$array | where-object index -eq 43122} | % totalmilliseconds
420.3766
Run Code Online (Sandbox Code Playgroud)
measure-command {$array.where{$_ -eq 43122}} | % totalmilliseconds
155.1342
Run Code Online (Sandbox Code Playgroud)
measure-command {$ht = @{};$array.foreach{$ht[$PSItem.index] = $psitem}} | % totalmilliseconds
124.0821
measure-command {$ht.43122} | % totalmilliseconds
3.4076
Run Code Online (Sandbox Code Playgroud)
有没有比先构建哈希表更快的方法?也许是不同的 .NET 数组类型,例如某种特殊类型的索引列表,我可以最初将其存储在其中,然后运行一个方法来根据唯一属性提取项目?
可能重复:
比较两个数组并获得不常见的值
我想要一种逻辑来从数组中获取不常见的项目,例如:
$a=@(1,2,3,4,5,6)
$b=@(1,2,3,4,5,7,9,10)
Run Code Online (Sandbox Code Playgroud)
我希望输出$c
为6,这是$b
数组中缺少的元素,应仅将的内容赋予优先级$a
。
谁能帮我这个忙吗?
谢谢!
我有两个列表,每个列表大约有 1k 人。我要做的就是找出两者之间剩下的是谁。
$BunchoEmail = Import-Csv C:\temp\Directory.csv | Select-Object primaryEmail -ExpandProperty primaryEmail
$GoogleUsers = gam print users fields suspended | ConvertFrom-Csv | Where-Object suspended -ne $true | Select-Object primaryEmail -ExpandProperty primaryEmail
$objects = @{
ReferenceObject = $GoogleUsers
DifferenceObject = $BunchoEmail
}
Compare-Object @objects
Run Code Online (Sandbox Code Playgroud)
以上没有产生我想要的。
找到不同之处的最佳方法是什么?