Filtrar un DataTable utilizando Linq

Ahora veremos como filtrar la información de un DataTable utilizando Linq.

Para nuestro ejemplo tendremos un DataTable llamado dtUsuarios que tiene tres columnas: Nombre, Edad y Sexo.

Ejemplo 1. Obtiene el listado de hombres

Para utilizar Linq sobre un DataTable primero tendremos que convertirlo en una colección de DataRows de la siguiente manera:
dtUsuarios.AsEnumerable()

Posteriormente utilizamos expresiones lambda para filtrar los datos:
dtUsuarios.AsEnumerable()
.Where(usuario => usuario.Field("Sexo").Equals("H"));

Esto nos regresa una variable de tipo IEnumerable la cual contiene el arreglo de DataRow que cumplen la condición.

Ejemplo 2. Obtener el listado de alumnos mayores a 18 años

De forma similar, podemos buscar utilizando operadores mayor que, menor que, igual que, etc. :
dtUsuarios.AsEnumerable()
.Where(usuario => usuario.Field("Edad") > 18);


Ejemplo 3. Obtener el listado de alumnos llamados Guadalupe y que sean mujer

También podemos utilizar varios operandos dentro de la misma condición:
dtUsuarios.AsEnumerable()
.Where(usuario => usuario.Field("Nombre").Equals("Guadalupe")
&& usuario.Field("Sexo").Equals("M"));

ne...

Comentarios

Entradas populares de este blog

Agregar registros a un GridView utilizando un DataTable

Validar registros de un DataTable

Agregar imágenes a los CommandFields