gpt4 book ai didi

arrays - Powershell 匹配属性,然后有选择地组合对象以创建第三个对象

转载 作者:行者123 更新时间:2023-12-05 03:09:45 26 4
gpt4 key购买 nike

我有一个解决方案,但我认为这不是最好的方法,因为它需要很长时间,所以我正在寻找一种更快/更好/更智能的方法。

我有多个从 .csv 文件中提取的 pscustomObject 对象。每个对象至少有一个共同属性。一个相对较小(对象中大约 200-300 个项目/行),但另一个相当大(大约 60,000-100,000 个项目)。一个的内容可能与另一个的内容匹配,也可能不匹配。

我需要找到两个对象在特定属性上匹配的位置,然后将每个对象的属性组合成一个具有全部或大部分属性的对象。

示例代码片段(不准确,但就此而言它应该有效 - 请参见示例数据的图像): DataTables

Write-Verbose "Pulling basic Fruit data together"
$Purchase = import-csv "C:\Purchase.csv"
$Selling = import-csv "C:\Selling.csv"

Write-Verbose "Combining Fruit names and removing duplicates"
$Fruits = $Purchase.Fruit
$Fruits += $Selling.Fruit
$Fruits = $Fruits | Sort-Object -Unique

$compareData = @()

Foreach ($Fruit in $Fruits) {
$IndResults = @()
$IndResults = [pscustomobject]@{
#Adding Purchase and Selling data
Farmer = $Purchase.Where({$PSItem.Fruit -eq $Fruit}).Farmer
Region = $Purchase.Where({$PSItem.Fruit -eq $Fruit}).Region
Water = $Purchase.Where({$PSItem.Fruit -eq $Fruit}).Water
Market = $Selling.Where({$PSItem.Fruit -eq $Fruit}).Market
Cost = $Selling.Where({$PSItem.Fruit -eq $Fruit}).Cost
Tax = $Selling.Where({$PSItem.Fruit -eq $Fruit}).Tax
}
Write-Verbose "Loading Individual results into response"
$CompareData += $IndResults
}

Write-Output $CompareData

我认为问题出在如下几行:

Farmer = $Purchase.Where({$PSItem.Fruit -eq $Fruit}).Farmer

如果我理解这一点,它会在每次通过此行时查看 $Purchase 对象。我正在寻找一种方法来加快整个过程,而不是让它在每次匹配尝试时都查看整个对象。

最佳答案

使用这个 Join-Object :

$Purchase | Join $Selling -On Fruit | Format-Table

结果(使用 Simon Catlin 的数据):

Fruit      Farmer  Region     Water Market  Cost Tax
----- ------ ------ ----- ------ ---- ---
Apple Adam Alabama 1 MarketA 10 0.1
Cherry Charlie Cincinnati 2 MarketC 20 0.2
Damson Daniel Derby 3 MarketD 30 0.3
Elderberry Emma Eastbourne 4 MarketE 40 0.4
Fig Freda Florida 5 MarketF 50 0.5

关于arrays - Powershell 匹配属性,然后有选择地组合对象以创建第三个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41861240/

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