Discussion:
Eliminar Filas de una Tabla
(demasiado antiguo para responder)
Imac_Man
2008-06-24 15:46:02 UTC
Permalink
Amigos,

como puedo eliminar de un objeto DataTable varias registros que coincidan
con un criterio o lo que seria el similar a hacer un "delete from tabla where
...."

gracias de antemano
Alberto Poblacion
2008-06-24 16:07:38 UTC
Permalink
Post by Imac_Man
como puedo eliminar de un objeto DataTable varias registros que coincidan
con un criterio o lo que seria el similar a hacer un "delete from tabla where
...."
En dos pasos:

Primero llama al método Select del datatable para obtener un array de
datarows que cumplan el criterio elegido.

Segundo, recorre ese array con un bucle, borrando cada uno de los
datarows. Recuerda que hay dos formas de borrarlos, dependiendo del efecto
deseado: Puedes hacer un Remove sobre la colección de Rows del DataTable, o
puedes hacer un Delete sobre el propio DataRow. En el primer caso, el
registro se elimina permanentemente del DataTable, mientras que en el
segundo caso sólo se marca como "borrado", para poder más tarde hacer un
Update para enviar al servidor de BD los correspondientes comandos de
borrado.
Imac_Man
2008-06-24 18:16:00 UTC
Permalink
Alberto,

gracias por tu ayuda, pero igual me gustaria saber si existe una forma de
eliminar sin hacer un ciclo
Post by Alberto Poblacion
Post by Imac_Man
como puedo eliminar de un objeto DataTable varias registros que coincidan
con un criterio o lo que seria el similar a hacer un "delete from tabla where
...."
Primero llama al método Select del datatable para obtener un array de
datarows que cumplan el criterio elegido.
Segundo, recorre ese array con un bucle, borrando cada uno de los
datarows. Recuerda que hay dos formas de borrarlos, dependiendo del efecto
deseado: Puedes hacer un Remove sobre la colección de Rows del DataTable, o
puedes hacer un Delete sobre el propio DataRow. En el primer caso, el
registro se elimina permanentemente del DataTable, mientras que en el
segundo caso sólo se marca como "borrado", para poder más tarde hacer un
Update para enviar al servidor de BD los correspondientes comandos de
borrado.
Alberto Poblacion
2008-06-24 21:37:13 UTC
Permalink
Post by Imac_Man
gracias por tu ayuda, pero igual me gustaria saber si existe una forma de
eliminar sin hacer un ciclo
Puedes usar una línea como esta:

Array.ForEach<DataRow>(elDataTable.Select(criterio), dr=>dr.Delete());

En esta linea he usado una expresión lambda para llamar a la instrucción de
borrado, lo cual requiere C# 3.0. Si estás con el 2.0, también se puede
conseguir un efecto similar mediante un delegado anónimo:

Array.ForEach<DataRow>(elDataTable.Select(criterio), delegate(DataRow
dr){dr.Delete();});

De todas formas, aunque no hayamos escrito expresamente el bucle, la
implementación interna del método ForEach del Array realiza un ciclo en
cualquier caso.
Imac_Man
2008-06-24 22:01:01 UTC
Permalink
Ok, Alberto agradezco mucho tu ayuda.

Saludos
Post by Alberto Poblacion
Post by Imac_Man
gracias por tu ayuda, pero igual me gustaria saber si existe una forma de
eliminar sin hacer un ciclo
Array.ForEach<DataRow>(elDataTable.Select(criterio), dr=>dr.Delete());
En esta linea he usado una expresión lambda para llamar a la instrucción de
borrado, lo cual requiere C# 3.0. Si estás con el 2.0, también se puede
Array.ForEach<DataRow>(elDataTable.Select(criterio), delegate(DataRow
dr){dr.Delete();});
De todas formas, aunque no hayamos escrito expresamente el bucle, la
implementación interna del método ForEach del Array realiza un ciclo en
cualquier caso.
Fernando A. Gómez F.
2008-09-09 21:01:34 UTC
Permalink
Post by Imac_Man
Alberto,
gracias por tu ayuda, pero igual me gustaria saber si existe una forma de
eliminar sin hacer un ciclo
La forma más talachuda sería que te crearas un DbCommand y pusieras el
query que quieres hacer, y lo ejecutas, y listo.

O bien, lo puedes poner en tu DbDataAdapter.DeleteCommand.

Saludos.

Continúe leyendo en narkive:
Loading...