Condividi tramite


Visualizzazione di dati in una tabella DataTable

È possibile accedere al contenuto di un DataTable oggetto utilizzando le raccolte Rows e Columns di DataTable. È anche possibile utilizzare il Select metodo per restituire subset dei dati in una tabella DataTable in base ai criteri, inclusi i criteri di ricerca, l'ordinamento e lo stato della riga. Inoltre, è possibile usare il metodo di Find durante la ricerca di una determinata riga usando un valore di chiave primaria.

Il metodo Select dell'oggetto DataTablerestituisce un set di DataRow oggetti che corrispondono ai criteri specificati. Select accetta argomenti facoltativi di un'espressione di filtro, un'espressione di ordinamento e DataViewRowState. L'espressione di filtro identifica le righe da restituire in base ai valori DataColumn , ad esempio LastName = 'Smith'. L'espressione di ordinamento segue le convenzioni SQL standard per l'ordinamento delle colonne, ad esempio LastName ASC, FirstName ASC. Per le regole sulla scrittura di espressioni, vedere la Expression proprietà della classe DataColumn .

Suggerimento

Se si eseguono diverse chiamate al metodo Select di un oggetto DataTable, è possibile aumentare le prestazioni creando prima un oggetto DataView per DataTable. La creazione di DataView indicizza le righe della tabella. Il metodo Select usa quindi tale indice, riducendo significativamente il tempo necessario per generare il risultato della query. Per informazioni sulla creazione di un oggetto DataView per un oggetto DataTable, vedere DataViews.

Il metodo Select determina la versione delle righe da visualizzare o modificare in base a un oggetto DataViewRowState. Nella tabella seguente vengono descritti i possibili valori di enumerazione DataViewRowState .

DataViewRowState Valore Descrizione
CurrentRows Righe correnti, includendo righe non modificate, righe aggiunte e righe modificate.
eliminato Una riga eliminata.
ModifiedCurrent Una versione corrente, ovvero una versione modificata dei dati originali. Vedere ModifiedOriginal.
Originale Modificato Versione originale di tutte le righe modificate. La versione corrente è disponibile usando ModifiedCurrent.
Aggiunto Nuova riga.
Nessuno Nessuno.
OriginalRows Righe originali, comprese quelle eliminate e non modificate.
Inalterato Riga non modificata.

Nell'esempio seguente l'oggetto DataSet viene filtrato in modo che si stia usando solo le righe di cui DataViewRowState è impostato su CurrentRows.

Dim column As DataColumn
Dim row As DataRow

Dim currentRows() As DataRow = _
    workTable.Select(Nothing, Nothing, DataViewRowState.CurrentRows)

If (currentRows.Length < 1 ) Then
  Console.WriteLine("No Current Rows Found")
Else
  For Each column in workTable.Columns
    Console.Write(vbTab & column.ColumnName)
  Next

  Console.WriteLine(vbTab & "RowState")

  For Each row In currentRows
    For Each column In workTable.Columns
      Console.Write(vbTab & row(column).ToString())
    Next

    Dim rowState As String = _
        System.Enum.GetName(row.RowState.GetType(), row.RowState)
    Console.WriteLine(vbTab & rowState)
  Next
End If
DataRow[] currentRows = workTable.Select(
    null, null, DataViewRowState.CurrentRows);

if (currentRows.Length < 1 )
  Console.WriteLine("No Current Rows Found");
else
{
  foreach (DataColumn column in workTable.Columns)
    Console.Write("\t{0}", column.ColumnName);

  Console.WriteLine("\tRowState");

  foreach (DataRow row in currentRows)
  {
    foreach (DataColumn column in workTable.Columns)
      Console.Write("\t{0}", row[column]);

    Console.WriteLine("\t" + row.RowState);
  }
}

Il metodo Select può essere utilizzato per restituire righe con valori rowstate o valori di campo diversi. Nell'esempio seguente viene restituita una matrice DataRow che fa riferimento a tutte le righe eliminate e restituisce un'altra matrice DataRow che fa riferimento a tutte le righe, ordinate da CustLName, in cui la colonna CustID è maggiore di 5. Per informazioni su come visualizzare le informazioni nella riga Eliminata , vedere Stati di riga e versioni di riga.

' Retrieve all deleted rows.
Dim deletedRows() As DataRow = workTable.Select(Nothing, Nothing, DataViewRowState.Deleted)

' Retrieve rows where CustID > 5, and order by CustLName.
Dim custRows() As DataRow = workTable.Select( _
    "CustID > 5", "CustLName ASC")
// Retrieve all deleted rows.
DataRow[] deletedRows = workTable.Select(
    null, null, DataViewRowState.Deleted);

// Retrieve rows where CustID > 5, and order by CustLName.
DataRow[] custRows = workTable.Select("CustID > 5", "CustLName ASC");

Vedere anche