Проверьте значения, если ничего не найдено. - PullRequest
0 голосов
/ 06 марта 2020

У меня есть этот код, который возвращает значения меньше -5 из массива с использованием пользовательских объектов

$Results.Where({$_.Value -lt -5d})

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

"Значения в пределах диапазона"

Я пробовал что-то подобное, но это не работает:

if(($Results.Where({$_.Value -lt -5d})) -eq 0)
{
    Write-host ('Values within range.')
}

1 Ответ

0 голосов
/ 06 марта 2020

При использовании метода where вы вернете коллекцию. Коллекции имеют встроенное свойство Count, которое можно использовать для перечисления количества объектов, содержащихся в коллекции.

if ($Results.Where({$_.Value -lt -5d}).Count -eq 0) {
# No objects are found
}

Существуют некоторые возможные предостережения для этого метода. Если ваши объекты содержат свойство с именем Count, свойство спецификации коллекции c Count переопределит его при доступе к .Count в коллекции. Если $Results является единственным PSCustomObject, $Results.Where() завершится ошибкой. Сначала вам нужно превратить $Results в коллекцию: @($Results).Where().


В PowerShell 7 вы можете использовать троичный оператор для if-else scenar ios.

$Results.Where({$_.Value -lt -5d}) ? "Objects Found" : "Objects not found"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...