Eliminar Filas de una Tabla

24/06/2008 - 17:46 por Imac_Man | Informe spam
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

Preguntas similare

Leer las respuestas

#1 Alberto Poblacion
24/06/2008 - 18:07 | Informe spam
"Imac_Man" wrote in message
news:
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.
Respuesta Responder a este mensaje
#2 Imac_Man
24/06/2008 - 20:16 | Informe spam
Alberto,

gracias por tu ayuda, pero igual me gustaria saber si existe una forma de
eliminar sin hacer un ciclo


"Alberto Poblacion" wrote:

"Imac_Man" wrote in message
news:
> 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.


Respuesta Responder a este mensaje
#3 Alberto Poblacion
24/06/2008 - 23:37 | Informe spam
"Imac_Man" wrote in message
news:
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.
Respuesta Responder a este mensaje
#4 Imac_Man
25/06/2008 - 00:01 | Informe spam
Ok, Alberto agradezco mucho tu ayuda.

Saludos


"Alberto Poblacion" wrote:

"Imac_Man" wrote in message
news:
> 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.



Respuesta Responder a este mensaje
#5 Fernando A. Gómez F.
09/09/2008 - 23:01 | Informe spam
Imac_Man wrote:
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.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida