gpt4 book ai didi

arrays - Powershell汇总名称相似的数组属性

转载 作者:行者123 更新时间:2023-12-02 23:55:10 25 4
gpt4 key购买 nike

有没有一种方法可以对数组中相似的属性名称求和而不是这样做呢?

    foreach ($row in $ExpenseData)
{
if ($row.refuel1_cost + $row.refuel2_cost + $row.refuel3_cost -gt 0)
{


}
}

最佳答案

如果您希望每一行的总和,则计算出的属性非常合适。

$ExpenseData | Select Name,@{'name'='Total refuel cost';'expression'={$_.refuel1_cost + $_.refuel2_cost + $_.refuel3_cost}}

我使用下面的示例生成我的费用数据。
function CreateSamplePump($Name,$cost1,$cost2,$cost3){
$Props = @{'Name'='';'refuel1_cost'='';'refuel2_cost'='';'refuel3_cost'=''}
$Obj = New-Object psobject -Property $props
$obj.Name = $Name
$obj.refuel1_cost = $cost1
$obj.refuel2_cost = $cost2
$obj.refuel3_cost = $cost3
return $Obj
}

# Generating a sample for test purposes
$ExpenseData = New-Object System.Collections.ArrayList
$ExpenseData.Add((CreateSamplePump -Name 'Pump1' -cost1 10 -cost2 13 -cost3 4))
$ExpenseData.Add((CreateSamplePump -Name 'Pump2' -cost1 4 -cost2 2 -cost3 3))
$ExpenseData.Add((CreateSamplePump -Name 'Pump3' -cost1 3 -cost2 2 -cost3 1))
$ExpenseData.Add((CreateSamplePump -Name 'Pump4' -cost1 4 -cost2 8 -cost3 2))
$ExpenseData.Add((CreateSamplePump -Name 'Pump6' -cost1 6 -cost2 5 -cost3 1))

编辑:

在不太可能的情况下,如果您希望在不了解数据集中加油费用列数的情况下对相似的属性名称求和,则可以使用类似的方法来获取所有相似的名称。

(尽管有名称,请改用名称。这样会更有效)
$CostsProperties = $ExpenseData | get-member |  where -like -Property Name -Value 'refuel*_cost' | select -ExpandProperty Name
$ExpenseData | Select Name, @{'name'='Total refuel cost';'expression'={$Total = 0;Foreach ($c in $CostsProperties) {$Total += $_."$c"};return $Total }}

关于arrays - Powershell汇总名称相似的数组属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46525037/

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