Domanda

Sto provando un " molto " semplice compito di generare valori di ogni riga da un DataSet :

for ($i=0;$i -le $ds.Tables[1].Rows.Count;$i++)
{
  Write-Host 'value is : ' + $i + ' ' + $ds.Tables[1].Rows[$i][0]
}

fornisce output ...

value is :  +0+ +System.Data.DataSet.Tables[1].Rows[0][0] 
value is :  +1+ +System.Data.DataSet.Tables[1].Rows[1][0] 
value is :  +2+ +System.Data.DataSet.Tables[1].Rows[2][0] 
value is :  +3+ +System.Data.DataSet.Tables[1].Rows[3][0] 
value is :  +4+ +System.Data.DataSet.Tables[1].Rows[4][0] 
value is :  +5+ +System.Data.DataSet.Tables[1].Rows[5][0] 
value is :  +6+ +System.Data.DataSet.Tables[1].Rows[6][0] 

Come posso ottenere il valore effettivo dalla colonna?

È stato utile?

Soluzione

La valutazione della stringa di PowerShell chiama ToString () sul DataSet. Per valutare eventuali proprietà (o chiamate di metodo), è necessario forzare la valutazione racchiudendo l'espressione in $()

for($i=0;$i -lt $ds.Tables[1].Rows.Count;$i++)
{ 
  write-host "value is : $i $($ds.Tables[1].Rows[$i][0])"
}

Inoltre foreach ti consente di scorrere attraverso una raccolta o un array senza doverne calcolare la lunghezza.

Riscritto (e modificato per la compilazione) -

foreach ($Row in $ds.Tables[1].Rows)
{ 
  write-host "value is : $($Row[0])"
}

Altri suggerimenti

Ecco un esempio pratico (crea un set di dati dalla posizione corrente):

$ds = new-object System.Data.DataSet
$ds.Tables.Add("tblTest")
[void]$ds.Tables["tblTest"].Columns.Add("Name",[string])
[void]$ds.Tables["tblTest"].Columns.Add("Path",[string])

dir | foreach {
    $dr = $ds.Tables["tblTest"].NewRow()
    $dr["Name"] = 

Ecco un esempio pratico (crea un set di dati dalla posizione corrente):

$ds.Tables["tblTest"] | foreach {
    write-host 'Name value is : 

Ecco un esempio pratico (crea un set di dati dalla posizione corrente):

$ds = new-object System.Data.DataSet
$ds.Tables.Add("tblTest")
[void]$ds.Tables["tblTest"].Columns.Add("Name",[string])
[void]$ds.Tables["tblTest"].Columns.Add("Path",[string])

dir | foreach {
    $dr = $ds.Tables["tblTest"].NewRow()
    $dr["Name"] = 

Ecco un esempio pratico (crea un set di dati dalla posizione corrente):

<*>

$ ds.Tables [" tblTest "] è un oggetto che puoi manipolare come qualsiasi altro oggetto Powershell:

<*>.name $dr["Path"] =

Ecco un esempio pratico (crea un set di dati dalla posizione corrente):

<*>

$ ds.Tables [" tblTest "] è un oggetto che puoi manipolare come qualsiasi altro oggetto Powershell:

<*>.fullname $ds.Tables["tblTest"].Rows.Add($dr) } $ds.Tables["tblTest"]

$ ds.Tables [" tblTest "] è un oggetto che puoi manipolare come qualsiasi altro oggetto Powershell:

<*>.name write-host 'Path value is :

Ecco un esempio pratico (crea un set di dati dalla posizione corrente):

$ds = new-object System.Data.DataSet
$ds.Tables.Add("tblTest")
[void]$ds.Tables["tblTest"].Columns.Add("Name",[string])
[void]$ds.Tables["tblTest"].Columns.Add("Path",[string])

dir | foreach {
    $dr = $ds.Tables["tblTest"].NewRow()
    $dr["Name"] = 

Ecco un esempio pratico (crea un set di dati dalla posizione corrente):

<*>

$ ds.Tables [" tblTest "] è un oggetto che puoi manipolare come qualsiasi altro oggetto Powershell:

<*>.name $dr["Path"] =

Ecco un esempio pratico (crea un set di dati dalla posizione corrente):

<*>

$ ds.Tables [" tblTest "] è un oggetto che puoi manipolare come qualsiasi altro oggetto Powershell:

<*>.fullname $ds.Tables["tblTest"].Rows.Add($dr) } $ds.Tables["tblTest"]

$ ds.Tables [" tblTest "] è un oggetto che puoi manipolare come qualsiasi altro oggetto Powershell:

<*>.path }

$ ds.Tables [" tblTest "] è un oggetto che puoi manipolare come qualsiasi altro oggetto Powershell:

<*>.name $dr["Path"] =

Ecco un esempio pratico (crea un set di dati dalla posizione corrente):

<*>

$ ds.Tables [" tblTest "] è un oggetto che puoi manipolare come qualsiasi altro oggetto Powershell:

<*>.fullname $ds.Tables["tblTest"].Rows.Add($dr) } $ds.Tables["tblTest"]

$ ds.Tables [" tblTest "] è un oggetto che puoi manipolare come qualsiasi altro oggetto Powershell:

<*>

Il parser ha problemi a concatenare la stringa. Prova questo:

write-host 'value is : '$i' '$($ds.Tables[1].Rows[$i][0])

Modifica: L'uso delle virgolette doppie potrebbe anche essere più chiaro poiché puoi includere le espressioni nella stringa tra virgolette:

write-host "value is : $i $($ds.Tables[1].Rows[$i][0])"
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top