Сортировать PowerShell OrderedDictionary с пользовательскими объектами - PullRequest
0 голосов
/ 09 апреля 2020

Я создал OrderedDictionary, заполненный пользовательскими объектами. Каждый объект имеет два свойства:

$myCustomObject.name = "foo"
$myCustomObject.date = <datetime here>
$orderedDictionary.add(<value here>,$MyObject)

Мне нужно отсортировать все элементы $ myCustomObject по дате. Как мне это сделать?

Обратите внимание, я не могу добавить элементы в упорядоченный словарь в отсортированном порядке.

Ответы [ 2 ]

2 голосов
/ 09 апреля 2020

Вы можете использовать эту строку кода:

$ordered = $myCustomObject | sort dateProperty

Вот документация для объекта сортировки, отрегулированного по мере необходимости.

0 голосов
/ 09 апреля 2020

Пожалуйста, посмотрите мой пример кода

PS C:\> $orderedDictionary = New-Object System.Collections.Specialized.OrderedDictionary

1..5 | % {

    Start-Sleep -Seconds 2

    $myCustomObject = "" | select name, date

    $myCustomObject.name = "foo$_"
    $myCustomObject.date = (Get-Date)

    $orderedDictionary.Add($_,$myCustomObject)

}

Прямой вывод:

PS C:\> $orderedDictionary

Name                           Value                                                                                                                                                 
----                           -----                                                                                                                                                 
1                              @{name=foo1; date=4/9/2020 10:01:32 AM}                                                                                                               
2                              @{name=foo2; date=4/9/2020 10:01:34 AM}                                                                                                               
3                              @{name=foo3; date=4/9/2020 10:01:36 AM}                                                                                                               
4                              @{name=foo4; date=4/9/2020 10:01:38 AM}                                                                                                               
5                              @{name=foo5; date=4/9/2020 10:01:40 AM}

Сортированный вывод (по убыванию):

PS C:\> $orderedDictionary.Values | sort date -Descending

name date                
---- ----                
foo5 4/9/2020 10:01:40 AM
foo4 4/9/2020 10:01:38 AM
foo3 4/9/2020 10:01:36 AM
foo2 4/9/2020 10:01:34 AM
foo1 4/9/2020 10:01:32 AM 

Надеюсь, это поможет.

...