none
Abfrage einer System.Collections.ArrayList RRS feed

  • Frage

  • Hallo zusammen,

    wie kann man ein Array abfragen um Werte abzufragen?

    Ich möchte die Spalte ID abfragen von einer Zeile mit bestimmten Eintrag in Name, quasi wie in etwa:

    $testid = $BestandsListe.ID where $BestandsListe.Name -like "Testeintrag 9"

    Als Beispiel habe ich das Array wie folgt erstellt:

    $BestandsListe = New-Object -TypeName System.Collections.ArrayList
    for ($i=1; $i -le 10; $i++) {
        [void]$BestandsListe.Add([PSCustomObject]@{  
            Datum=Get-Date;
            ID=$i;
            Name="Testeintrag $i";
            Gruppe="Test-Gruppe $i";
            Erstellt="Nein"
        })
    }

    Im Moment mache ich das so, was etwas umständlich erscheint, aber eventuell nur so möglich ist:

    $testid=$BestandsListe.ID[$BestandsListe.Name.IndexOf("Testeintrag 9")]

    Get das auch besser oder eleganter?

    Viele Grüsse,
    Daniel


    • Bearbeitet DniBo Montag, 13. Juli 2020 14:07
    Montag, 13. Juli 2020 14:07

Antworten

Alle Antworten

  • Der Zugriff auf ein Array ist:

    $Bestandsliste[$Index].Eigenschaft

    Da das Array keinen Stringindex hat, kann nur ein numerischer Index verwendet werden, also bei dir:

    $Bestandsliste[0].Datum
    $Bestandsliste[0].Id

    usw.

    Alternativ geht auch ein Dictionary:

    $Bestandsliste = @{}
    $Bestandsliste[$Id] = @{Id = $Id; ....}

    Wobei du in diesem Fall auch Namen statt Zahlen als Id verwenden kannst.

    Ps:

    Ein Array erstellt man mit

    $Bestandsliste = @[];

    Montag, 13. Juli 2020 14:21
  • Moin,

    Du kannst natürlich immer mit Where arbeiten, wie in Deinem ersten Beispiel angedeutet:

    $BestandsListe | Where-Object Name -like "Testeintrag 9" | Select-Object -ExpandProperty ID

    oder auch

    $BestandsListe.Where({$_.Name -like "Testeintrag 9"}).ID
    Zum teilweise unterschiedlichen Verhalten der beiden Methoden habe ich mal was geschrieben: https://it-pro-berlin.de/2019/12/powershell-quirks-where-object-vs-where/


    Evgenij Smirnov

    http://evgenij.smirnov.de

    Montag, 13. Juli 2020 14:28