Compartir a través de


Ver datos en una tabla

Se puede tener acceso al contenido de una DataTable mediante las colecciones Rows y Columns de la DataTable. Se puede usar también el método DataTable.Select para devolver subconjuntos de los datos de una DataTable según ciertos criterios, como criterios de búsqueda, orden de clasificación y estado de la fila. Además, se puede utilizar el método Find de la DataRowCollection cuando se busque una fila determinada mediante el valor de una clave principal.

El método Select del objeto DataTable devuelve un conjunto de objetos DataRow que coinciden con los criterios especificados. Select toma argumentos opcionales de una expresión de filtro, expresión de ordenación y DataViewRowState. La expresión de filtro identifica qué filas se van a devolver basándose en valores de DataColumn, como LastName = 'Smith'. La expresión de ordenación sigue convenciones SQL estándar para ordenar columnas, por ejemplo LastName ASC, FirstName ASC. Para obtener las reglas de escritura de expresiones, vea la propiedad Expression de la clase DataColumn.

**Sugerencia   **Si va a realizar una serie de llamadas al método Select de una DataTable, puede mejorar el rendimiento creando primero una DataView para la DataTable. Si se crea la DataView se indizarán las filas de la tabla. El método Select usará, a continuación, ese índice, lo que reduce considerablemente el tiempo necesario para generar el resultado de la consulta. Para obtener información sobre la creación de una DataView para una DataTable, vea Crear y usar DataViews.

El método Select determina qué versión de las filas se debe ver o manipular, según un DataViewRowState. En la siguiente tabla se recogen los posibles valores de la enumeración DataViewRowState.

Nombre del miembro Descripción
CurrentRows Filas actuales, incluidas las filas sin modificar, agregadas y modificadas.
Deleted Una fila eliminada.
ModifiedCurrent Una versión actual, que es una versión modificada de los datos originales. (Vea ModifiedOriginal).
ModifiedOriginal Versión original de todas las filas modificadas. La versión actual está disponible usando ModifiedCurrent.
Added Una fila nueva.
None Ninguno.
OriginalRows Filas originales, incluidas las filas sin modificar y las eliminadas.
Unchanged Fila sin modificar.

En el ejemplo siguiente, el objeto DataSet se filtra de manera que se trabaje sólo con las filas cuyo DataViewRowState está establecido en 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);
  }
}

El método Select se puede usar para devolver filas con valores de RowState o valores de campo distintos. En el ejemplo siguiente se devuelve una matriz DataRow que hace referencia a todas las filas que se han eliminado y devuelve otra matriz DataRow que hace referencia a todas las filas, ordenadas por CustLName, donde la columna CustID sea mayor que 5. Para obtener información sobre cómo ver la información en la fila Deleted, vea Estados de fila y versiones de fila.

' 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");

Vea también

Manipular datos en DataTable | Estados de fila y versiones de fila | DataRow (Clase) | DataSet (Clase) | DataTable (Clase) | DataViewRowState (Enumeración)