DataTable en ADO.
NET
Definición
Un DataTable es una de las clases fundamentales en [Link] que representa una tabla de
datos en memoria. Permite almacenar, manipular y gestionar datos de forma desconectada
de la fuente de datos original. Cada DataTable contiene una colección de filas (DataRow) y
columnas (DataColumn), y puede formar parte de un DataSet o utilizarse de forma
independiente. Es ideal para escenarios donde se requiere trabajar con datos
temporalmente sin necesidad de mantener una conexión constante con la base de datos.
Estructura
La estructura de un DataTable está compuesta por varios elementos clave:
- DataColumn: Define el esquema de la tabla, especificando el nombre, tipo de datos,
restricciones, valores predeterminados, etc.
- DataRow: Representa una fila de datos dentro de la tabla. Cada fila contiene valores
correspondientes a las columnas definidas.
- Constraints: Permiten establecer reglas de integridad como claves primarias, claves
foráneas y restricciones de unicidad.
- PrimaryKey: Se puede definir una o más columnas como clave primaria para identificar de
forma única cada fila.
- ExtendedProperties: Permite almacenar metadatos personalizados asociados a la tabla.
Características y Ventajas
- Acceso desconectado: Permite trabajar con los datos sin mantener una conexión activa con
la base de datos.
- Flexibilidad: Se pueden agregar, modificar y eliminar filas fácilmente.
- Integración con DataSet: Puede formar parte de un DataSet que contenga múltiples tablas
y relaciones.
- Serialización: Se puede guardar y cargar en formato XML.
- Compatibilidad con LINQ: Permite realizar consultas expresivas y potentes sobre los datos
en memoria.
- Validación: Soporta eventos como ColumnChanging y RowChanging para validar datos
antes de aplicar cambios.
- Rendimiento: Ideal para manejar volúmenes moderados de datos en memoria sin
necesidad de múltiples consultas a la base de datos.
Integración con LINQ
DataTable se puede consultar utilizando LINQ to DataSet, lo que permite realizar filtros,
agrupaciones, ordenamientos y proyecciones de forma declarativa. Esto facilita la
manipulación de datos en memoria con una sintaxis clara y expresiva. Ejemplo:
var resultados = from fila in [Link]()
where [Link]<int>("Edad") > 25
select fila;
Casos de uso en ETL
En procesos ETL (Extracción, Transformación y Carga), DataTable es útil como estructura
intermedia para almacenar datos extraídos de una fuente (como un DataReader), realizar
transformaciones en memoria (como cálculos, validaciones o conversiones de tipo) y luego
cargar los datos transformados en otra base de datos o archivo. Su capacidad de trabajar
desconectado y su integración con LINQ lo hacen ideal para este tipo de escenarios.
Ejemplo en C#
using System;
using [Link];
using [Link];
class EjemploDataTable {
static void Main() {
DataTable tabla = new DataTable("Personas");
[Link]("Nombre", typeof(string));
[Link]("Edad", typeof(int));
[Link]("Ciudad", typeof(string));
[Link]("Ana", 25, "Lima");
[Link]("Luis", 30, "Arequipa");
[Link]("Carlos", 22, "Cusco");
// Consulta LINQ: personas mayores de 24 años
var mayores = from fila in [Link]()
where [Link]<int>("Edad") > 24
select fila;
foreach (var fila in mayores) {
[Link]($"{fila["Nombre"]}, {fila["Edad"]}, {fila["Ciudad"]}");
}
}
}