Foreach

01/07/2006 - 20:59 por mickro | Informe spam
Hola, tengo el siguiente codigo:

foreach(DataRow row in ds.tblProductos.Rows)
{
if(row.Codigo = = 100)
{
row.Delete();
}
}

Pero me da un error que dice que la Coleccion fue modificada (porque elimino
un DataRow). Lo que quiero hacer es eliminar todos lo registros que tengan
como Codigo el numero 100. He intentado hacerlo con un bucle FOR y si
funciono, pero necesito hacer mas cosas dentro del bucle y con el FOREACH me
es mas comodo. Hay alguna forma de hacer esto con el FOREACH??

Gracias y Saludos!!
 

Leer las respuestas

#1 Alberto Poblacion
01/07/2006 - 21:47 | Informe spam
"mickro" wrote in message
news:%
foreach(DataRow row in ds.tblProductos.Rows)
{
if(row.Codigo = = 100)
{
row.Delete();
}
}

Pero me da un error que dice que la Coleccion fue modificada (porque
elimino un DataRow). Lo que quiero hacer es eliminar todos lo registros
que tengan como Codigo el numero 100. He intentado hacerlo con un bucle
FOR y si funciono, pero necesito hacer mas cosas dentro del bucle y con el
FOREACH me es mas comodo. Hay alguna forma de hacer esto con el FOREACH??



No. Una regla del foreach es que dentro del bucle no se puede modificar
la colección que se está recorriendo. Tus alternativas son, o bien utilizar
un bucle "for", cosa que ya has probado, o dentro del bucle extraer en
memoria una lista de todos los registros que tienen el código 100 y luego
borrarlos fuera del bucle foreach con otro bucle distinto (este segundo
bucle sí que funciona porque está recorriendo una lista diferente de la que
se está modificando).

Preguntas similares