Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Puede acceder al contenido de un DataTable mediante las colecciones de Rows y Columns de DataTable. También puede usar el método Select para devolver subconjuntos de los datos en un DataTable según criterios, incluido el criterio de búsqueda, el criterio de ordenación y el estado de fila. Además, puede utilizar el método Find de DataRowCollection al buscar una fila determinada utilizando un valor de clave primaria.
El Select método del DataTable objeto devuelve un conjunto de DataRow objetos que coinciden con los criterios especificados.
Select toma argumentos opcionales de una expresión de filtro, una expresión de ordenación y DataViewRowState. La expresión de filtro identifica las filas que se van a devolver basándose en valores como DataColumn. La expresión de ordenación sigue las convenciones SQL estándar para ordenar columnas, por ejemplo LastName ASC, FirstName ASC. Para obtener reglas sobre la escritura de expresiones, vea la Expression propiedad de la DataColumn clase .
Sugerencia
Si realiza una serie de llamadas al Select método de una DataTable, puede aumentar el rendimiento creando primero un DataView elemento para DataTable. La creación de los DataView indexa las filas de la tabla. A continuación, el Select método usa ese índice, lo que reduce significativamente el tiempo para generar el resultado de la consulta. Para obtener información sobre cómo crear un elemento DataView para una dataTable, consulte DataViews.
El Select método determina qué versión de las filas se va a ver o manipular en función de un DataViewRowState. En la tabla siguiente se describen los posibles DataViewRowState valores de enumeración.
| Valor DataViewRowState | Descripción |
|---|---|
| CurrentRows | Las filas actuales, incluidas las filas sin cambios, agregadas y modificadas. |
| Eliminado | Fila eliminada. |
| ModifiedCurrent | Una versión actual, que es una versión modificada de los datos originales. (Vea ModifiedOriginal). |
| ModifiedOriginal | La versión original de todas las filas que han sido modificadas. La versión actual está disponible mediante ModifiedCurrent. |
| Agregado | Nueva fila. |
| Ninguno | Ninguno. |
| OriginalRows | Filas originales, incluidas las filas no modificadas y eliminadas. |
| Inalterado | Una fila sin modificar. |
En el ejemplo siguiente, el DataSet objeto se filtra para que solo trabaje con filas cuya DataViewRowState propiedad esté establecida en 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);
}
}
El Select método se puede usar para devolver filas con valores o valores de RowState campo diferentes. En el ejemplo siguiente se devuelve una DataRow matriz que hace referencia a todas las filas que se han eliminado y devuelve otra DataRow matriz que hace referencia a todas las filas, ordenadas por CustLName, donde la CustID columna es mayor que 5. Para conocer cómo visualizar los datos de la Deleted fila, consulte Estados de fila y Versiones de fila.
' 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");