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