Foros del Web » Programación para mayores de 30 ;) » .NET »

Recorrer y eliminar elementos de una lista C# o VB, tanto da.

Estas en el tema de Recorrer y eliminar elementos de una lista C# o VB, tanto da. en el foro de .NET en Foros del Web. Buenas tardes !!! Bueno gente, el problema que tengo es el siguiente: Tengo unos elementos en una lista, de los cuales quiero eliminar algunos, es ...
  #1 (permalink)  
Antiguo 02/01/2008, 06:49
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.429
Antigüedad: 20 años, 11 meses
Puntos: 7
Recorrer y eliminar elementos de una lista C# o VB, tanto da.

Buenas tardes !!!

Bueno gente, el problema que tengo es el siguiente: Tengo unos elementos en una lista, de los cuales quiero eliminar algunos, es decir, los que cumplan un criterio.

En principio me puse a hacerlo con un Foreach, pero claro... me da error por estar modificando la lista durante el bucle, algo lógico.

Entonces... ¿Alguien me puede dar una idea de como eliminar los elementos de una lista que cumplan un cierto criterio?

Codigo actual:
Código:
        private void ComprobarEstadoClientes()
        {
            while (true)
            {
                List<Socket> objLista = this.listaSockets;                
                foreach (Socket objSocket in objLista)
                {
                    if (objSocket.Poll(2000, SelectMode.SelectRead))
                    {
                        if (FinConexion != null)
                        {
                            string ipClienteConectado = ((IPEndPoint)objSocket.RemoteEndPoint).Address.ToString();
                            int puertoClienteConectado = ((IPEndPoint)objSocket.RemoteEndPoint).Port;
                            FinConexion(ipClienteConectado, puertoClienteConectado);
                        }
                        listaSockets.Remove(objSocket);
                    }
                }
            }
        }
__________________
Charlie.
  #2 (permalink)  
Antiguo 02/01/2008, 06:51
Avatar de Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 16 años, 8 meses
Puntos: 87
Re: Recorrer y eliminar elementos de una lista C# o VB, tanto da.

-usa un for convencional y elimina en base al indice.

Saludos
Peterpay
  #3 (permalink)  
Antiguo 02/01/2008, 08:07
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.429
Antigüedad: 20 años, 11 meses
Puntos: 7
Re: Recorrer y eliminar elementos de una lista C# o VB, tanto da.

Muchas gracias nuevamente, jejeje

Al final lo solucioné de otra forma:

Código:
        private void ComprobarEstadoClientes()
        {
            while (true)
            {
                Socket[] objLista = new Socket[listaSockets.Count];
                listaSockets.CopyTo(objLista);
                    
                foreach (Socket objSocket in objLista)
                {
                    if (objSocket.Poll(2000, SelectMode.SelectRead))
                    {
                        if (FinConexion != null)
                        {
                            string ipClienteConectado = ((IPEndPoint)objSocket.RemoteEndPoint).Address.ToString();
                            int puertoClienteConectado = ((IPEndPoint)objSocket.RemoteEndPoint).Port;
                            FinConexion(ipClienteConectado, puertoClienteConectado);
                        }
                        EliminarSocket(objSocket);
                    }
                }
            }
        }
        private void EliminarSocket(Socket objSocket)
        {
            listaSockets.Remove(objSocket);
        }
__________________
Charlie.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:25.