Visualisation de données dans un DataTable
Vous pouvez accéder au contenu d'un objet DataTable à l'aide des collections Rows et Columns du DataTable. Vous pouvez également utiliser la méthode Select pour retourner des sous-ensembles des données d'un DataTable en fonction de certains critères, notamment des critères de recherche, l'ordre de tri et l'état de la ligne. De plus, vous pouvez utiliser la méthode Find du DataRowCollection lorsque vous recherchez une ligne particulière à l'aide d'une valeur de clé primaire.
La méthode Select de l'objet DataTable retourne un ensemble d'objets DataRow correspondant aux critères spécifiés. Select prend des arguments facultatifs d'une expression de filtre, une expression de tri et DataViewRowState. L'expression de filtre identifie la ligne à retourner en fonction des valeurs de DataColumn, telles que LastName = 'Smith'. L'expression de tri respecte les conventions SQL standard de tri des colonnes, comme LastName ASC, FirstName ASC. Pour des informations sur les règles d'écriture des expressions, voir la propriété Expression de la classe DataColumn.
Conseil |
---|
Si vous devez effectuer plusieurs appels à la méthode Select d'un DataTable, vous pouvez améliorer les performances en créant préalablement un objet DataView pour le DataTable.La création du DataView indexe les lignes de la table.La méthode Select utilise ensuite cet index, ce qui réduit sensiblement le temps nécessaire pour générer les résultats de la requête.Pour plus d'informations sur la création d'un DataView pour un DataTable, voir DataViews (ADO.NET). |
La méthode Select détermine la version des lignes à afficher ou à manipuler, en fonction d'un objet DataViewRowState. Le tableau suivant répertorie les valeurs possibles d'énumération DataViewRowState.
Valeur DataViewRowState |
Description |
---|---|
CurrentRows |
Les lignes en cours comprennent les lignes non modifiées, les lignes ajoutées et les lignes modifiées. |
Deleted |
Ligne supprimée. |
ModifiedCurrent |
Une version actuelle, qui est une version modifiée des données d'origine. (Voir ModifiedOriginal.) |
ModifiedOriginal |
La version d'origine de toutes les lignes modifiées. La version actuelle est disponible à l'aide de ModifiedCurrent. |
Added |
Nouvelle ligne. |
None |
Aucune. |
OriginalRows |
Les lignes d'origine, notamment les lignes non modifiées et les lignes supprimées. |
Unchanged |
Ligne non modifiée. |
Dans l'exemple suivant, l'objet DataSet est filtré de sorte que vous n'utilisiez que les lignes dont le DataViewRowState a la valeur 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);
}
}
La méthode Select peut être utilisée pour retourner des lignes ayant des valeurs de champs ou des valeurs RowState différentes. L'exemple suivant retourne un tableau DataRow qui référence toutes les lignes supprimées, ainsi qu'un autre tableau DataRow qui référence toutes les lignes, classées par CustLName, où la colonne CustID est supérieure à 5. Pour plus d'informations sur l'affichage des informations de la ligne Deleted, consultez États et versions de ligne.
' 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");