[英]PowerShell logic to remove objects from Array
我正在嘗試從包含重復項的數組中刪除對象,並僅將具有最大數量的對象保留在TasteCode
。 下面的示例已高度簡化,但顯示了該問題。
例:
$Fruits
Name | Color | TasteCode
----- ------ ---------
Apple | Red | 2
Apple | Red | 3
Peer | Green | 0
Banana | Yellow | 1
Banana | Yellow | 0
Banana | Yellow | 3
所需解決方案:
Name | Color | TasteCode
----- ------ ---------
Apple | Red | 3
Peer | Green | 0
Banana | Yellow | 3
我已經成功地收集了需要刪除的內容,但是效果並不理想:
$DuplicateMembers = $Fruits | Group-Object Name | Where Count -GE 2
$DuplicateMembers | ForEach-Object {
$Remove = $_.Group | Sort-Object TasteCode | Select -First ($_.Group.Count -1)
$Fruits = Foreach ($F in $Fruits) {
Foreach ($R in $Remove) {
if (($F.Name -ne $R.Name) -and ($F.TasteCode -ne $R.TasteCode)) {
$F
}
}
}
}
謝謝您的幫助。
不執行刪除操作,而僅按tastecode
降序排列並僅獲得一個第一結果怎么樣?
$DuplicateMembers = $Fruits | Group-Object Name
$DuplicateMembers | ForEach-Object {
$Outcome = $_.Group | Sort-Object TasteCode -descending | Select -First 1
$Outcome
}
這樣,您就不必費心刪除此查詢結果中的任何內容。
按TasteCode對水果排序,按名稱分組,然后選擇每組的前1個:
$result = $Fruits | sort TasteCode -Descending | group Name | % { $_.Group | select -first 1}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.