Visualizzazione dei dati nella tabella

Gli insiemi Rows e Columns della DataTable consentono di accedere ai contenuti della DataTable. Il metodo DataTable.Select viene utilizzato per restituire sottoinsiemi dei dati di 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 della DataTable restituisce un insieme 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 informazioni relative alle regole di scrittura delle espressioni, vedere la proprietà Expression della classe DataColumn.

**Suggerimento   **Se si prevede l'effettuazione di un numero di chiamate al metodo Select di una DataTable, è possibile migliorare le prestazioni creando un DataView per la DataTable. La creazione di DataView consente di indicizzare 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 Creazione e utilizzo di DataView.

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

Nome membro 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 Nessuno.
OriginalRows Righe originali, incluse le righe non modificate ed eliminate.
Unchanged Riga non modificata.

Nell'esempio seguente viene applicato un filtro all'oggetto DataSet. Vengono quindi eseguite operazioni solo sulle righe il cui valore DataViewRowState è impostato su CurrentRows.

Dim myCol As DataColumn
Dim myRow As DataRow

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

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

  Console.WriteLine(vbTab & "RowState")

  For Each myRow In currRows
    For Each myCol In workTable.Columns
      Console.Write(vbTab & myRow(myCol).ToString())
    Next

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

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

  Console.WriteLine("\tRowState");

  foreach (DataRow myRow in currRows)
  {
    foreach (DataColumn myCol in workTable.Columns)
      Console.Write("\t{0}", myRow[myCol]);

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

È possibile utilizzare il metodo Select per restituire righe con diversi valori RowState o valori di campo. Nell'esempio che segue vengono restituite due matrici DataRow, una contenente riferimenti a tutte le righe eliminate e l'altra 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 delRows() 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")
[C#]
// Retrieve all deleted rows.
DataRow[] delRows = 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

Modifica dei dati in una DataTable | Stati delle righe e versioni delle righe | Classe DataRow | Classe DataSet | Classe DataTable | Enumerazione DataViewRowState