Condividi tramite


Visualizzazione dei dati in DataTable

Le raccolte Rows e Columns della DataTable consentono di accedere al contenuto di un tipo DataTable. È inoltre possibile utilizzare il metodo Select per restituire subset dei dati in una DataTable in base a determinati criteri, inclusi i criteri di ricerca, l'ordinamento e lo stato della riga. È inoltre possibile utilizzare il metodo Find di DataRowCollection quando si cerca una particolare riga mediante un valore di chiave primaria.

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

SuggerimentoSuggerimento

Se si eseguono più chiamate al metodo Select di un oggetto DataTable, è possibile migliorare le prestazioni creando un tipo DataView per l'oggetto DataTable.Tramite la creazione di DataView vengono indicizzate le righe della tabella.L'indice creato verrà utilizzato dal metodo Select, riducendo in modo significativo il tempo necessario per generare il risultato della query.Per informazioni sulla creazione di un DataView per una DataTable, vedere DataView (ADO.NET).

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

Valore di DataViewRowState

Descrizione

CurrentRows

Righe correnti, incluse le righe non modificate, aggiunte e modificate.

Deleted

Riga eliminata.

ModifiedCurrent

Una versione corrente, ovvero una versione modificata dei dati originali. Vedere ModifiedOriginal.

ModifiedOriginal

La versione originale di tutte le righe modificate. La versione corrente è disponibile tramite ModifiedCurrent.

Added

Nuova riga.

None

Nessun valore.

OriginalRows

Righe originali, tra cui righe non modificate ed eliminate.

Unchanged

Riga non modificata.

Nell'esempio seguente viene applicato un filtro all'oggetto DataSet in modo da poter utilizzare le righe il cui valore di 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);
  }
}

È possibile utilizzare il metodo Select per restituire righe con diversi valori RowState o valori di campo. Nell'esempio seguente vengono restituite una matrice DataRow contenente riferimenti a tutte le righe che sono state eliminate e una matrice DataRow contenente riferimenti a tutte le righe, ordinate per CustLName, in cui il valore della colonna CustID è superiore a 5. Per informazioni su come visualizzare le informazioni nella riga Deleted, vedere Stati delle righe e versioni delle righe.

' 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

Riferimenti

DataRow

DataSet

DataTable

DataViewRowState

Concetti

Stati delle righe e versioni delle righe

Altre risorse

Modifica dei dati in una DataTable