Как проверить, существует ли член объекта в массиве по свойству? - PullRequest
0 голосов
/ 12 сентября 2018

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

У меня есть следующий объект:

PS> $siteUser

Id Title                            LoginName                                                                   Email
-- -----                            ---------                                                                   -----
1305 cinuwyl@banit.club             i:0#.f|membership|urn%3aspo%3aguest#cinuwyl@banit.club                      cinuwyl@banit.club

Я хотел бы проверить,строка membership из свойства LoginName существует в массиве:

federateddirectoryclaimprovider
tenant
membership

Я получил только определение соответствия, указав индекс массива для membership:

$siteUsers.LoginName | Where-Object {$_ -match $inclusionObjects[2]}

Однако для этого необходимо заранее знать индекс массива для совпадающей строки.

Еще одна вещь, которую я пробовал, но которая не дает результатов:

$siteUsers | Where-Object {$inclusionObjects | ForEach-Object {$_ -match $_.LoginName}}

Есть ли способ просмотреть каждый элемент в массиве?

1 Ответ

0 голосов
/ 12 сентября 2018

Чтобы проверить, соответствует ли ЛЮБОЕ слово в списке $siteUsers.LoginName, вы можете использовать следующее:

$siteUsers = [pscustomobject]@{
  Id=1305;
  Title='cinuwyl@banit.club';
  LoginName='i:0#.f|membership|urn%3aspo%3aguest#cinuwyl@banit.club';
  Email='cinuwyl@banit.club'
}

$inclusionObjects = [string[]]'federateddirectoryclaimprovider','tenant','membership'
$predicate = [Func[string,bool]]{$siteUsers.LoginName.Contains($args[0])}

[System.Linq.Enumerable]::Any($inclusionObjects, $predicate)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...