Visualisation de données dans une table
Vous pouvez accéder au contenu d'un DataTable à l'aide des collections Rows et Columns du DataTable. Vous pouvez également utiliser la méthode DataTable.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 de 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, consultez la propriété Expression de la classe DataColumn.
**Conseil **Si devez effectuer plusieurs appels à la méthode Select d'un DataTable, vous pouvez améliorer les performances en créant préalablement un DataView pour le DataTable. La création du DataView indexera les lignes de la table. La méthode Select utilisera ensuite cet index, ce qui réduira 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, consultez Création et utilisation de DataViews.
La méthode Select détermine les versions des lignes à visualiser ou à manipuler, en fonction d'un DataViewRowState. Le tableau suivant répertorie les valeurs possibles d'énumération DataViewRowState.
Nom de membre | Description |
---|---|
CurrentRows | Les lignes en cours comprennent les lignes non modifiées, les lignes ajoutées et les lignes modifiées. |
Deleted | Une ligne supprimée. |
ModifiedCurrent | Une version actuelle, qui est une version modifiée des données d'origine. (Consultez ModifiedOriginal.) |
ModifiedOriginal | La version d'origine de toutes les lignes modifiées. La version actuelle est disponible à l'aide de ModifiedCurrent. |
Added | Une nouvelle ligne. |
None | Aucune. |
OriginalRows | Les lignes d'origine, notamment les lignes non modifiées et les lignes supprimées. |
Unchanged | Une 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 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);
}
}
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 et un autre tableau DataRow qui référence toutes les lignes, triées par CustLName, dont la colonne CustID est supérieure à 5. Pour plus d'informations sur l'affichage des informations de la colonne Deleted, consultez États et versions de ligne.
' 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");
Voir aussi
Manipulation de données dans un DataTable | États et versions de ligne | DataRow, classe | DataSet, classe | DataTable, classe | DataViewRowState, énumération