簡體   English   中英

PowerShell邏輯從數組中刪除對象

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM