Si usted puede convertir a la utilización de la lista <> en lugar de ListaEnlazada <> continuación, puede utilizar la operación RemoveAll(). Pase un delegado anónimo como este;
List<string> list = new List<string>()
{
"Fred","Joe","John"
};
list.RemoveAll((string val) =>
{
return (0 == val.CompareTo("Fred"));
});
Todo esto está utilizando extensiones Linq.
Si no puede convertir a una lista, puede usar el método ToList <>() para convertirlo. Pero luego tendrá que hacer algunas operaciones claras y de inserción. Me gusta esto;
LinkedList<string> str = new LinkedList<string>();
str.AddLast("Fred");
str.AddLast("Joe");
str.AddLast("John");
List<string> ls = str.ToList();
ls.RemoveAll((string val) => val.CompareTo("Fred") == 0);
str.Clear();
ls.ForEach((string val) => str.AddLast(val));
Si todo esto todavía no es apetecible, intente hacer una copia de la LinkedList de esta manera;
LinkedList<string> str = new LinkedList<string>();
str.AddLast("Fred");
str.AddLast("Joe");
str.AddLast("John");
LinkedList<string> strCopy = new LinkedList<string>(str);
str.Clear();
foreach (var val in strCopy)
{
if (0 != val.CompareTo("Fred"))
{
str.AddLast(val);
}
}
Espero que ayude.
derecha, creo que tengo que hacer un myCollection.Remove (it.Value) en su lugar. –
cambiaron mi nombre: simplemente puede hacer una myCollection.Remove (it) - Remove tiene una sobrecarga que toma un 'LinkedListNode' - no necesita extraer el valor. –
itowlson
Correr hacia la colección parece un poco intensivo de recursos. Si sabe que la secuencia de nodos lógica sugiere que podría hacer esto de manera más eficiente al decirle al nodo anterior que cambie su nodo al siguiente nodo del nodo actual. Di eso diez veces rápido. – Oli