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.
Suggerimento |
---|
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
Concetti
Stati delle righe e versioni delle righe