Acerca de:

Este blog contiene los códigos, ejemplos y bases de datos que he usado cuando aprendía acerca de algún tema específico. En lugar de borrarlos (una vez dominado ya el tema), he decidido publicarlos :)

miércoles, 1 de octubre de 2014

Modificar los datos de un DataTable con Linq en C#

Este post existe gracias a la ayuda de StackOverflow :D

Tengo un DataTable, el cual tiene una columna llamada "Campo1" con datos tipo texto. Quiero que todos los datos que coincidan con un valor sean cambiados por la cadena "Datos por Defecto".
En lugar de usar un bucle, se puede hacer con Linq:

DataTable d = MetodoQueDevuelveUnDataTable();
d.AsEnumerable().ToList<DataRow>().ForEach
   ( r =>
             {
                     if(String.Compare(r["Campo1"].ToString(), "valor que quiero cambiar") == 0)
                          r["Campo1"] = "Datos Por Defecto";
             }
   );

Lo que hace el ForEach es recorrer todas las filas y buscar aquellas donde se cumple la condición y realizar las acciones que deseemos:

DataTable d = MetodoQueDevuelveUnDataTable();
d.AsEnumerable().ToList<DataRow>().ForEach
  ( r =>
             {
                      if(String.Compare(r["Campo1"].ToString(), "valor que quiero cambiar") == 0)
                      {
                           r["Campo1"] = "Datos Por Defecto";
                           r["Campo2"] = Otro Valor;
                       }
             }
  );

Si se desea modificar un valor de uno o más campos determinados en todas las filas, sólo se quita la condición:
 
DataTable d = MetodoQueDevuelveUnDataTable();
d.AsEnumerable().ToList<DataRow>().ForEach
  ( r =>
             {
                 r["Campo1"] = "Datos Por Defecto";
                 r["Campo2"] = Otro Valor;
             }
  );

2 comentarios:

Cristian García Arias dijo...

Muy bueno, gracias.

Unknown dijo...

Hola. Y si quiero reemplazar por ejemplo todos los valores "" de todos las columnas de todas las filas por el valor null ?

Dese ya muchas gracias. saludos.