2008-09-25 13 views
5

Tengo una LinkedList, donde Entry tiene un miembro llamado id. Quiero eliminar la entrada de la lista donde la identificación coincide con un valor de búsqueda. ¿Cuál es la mejor manera de hacer esto? No quiero usar Remove(), porque Entry.Equals comparará otros miembros, y solo deseo hacer coincidir el id. Estoy esperando para hacer algo un poco como esto:¿Cómo elimino un elemento que coincide con un criterio dado de una lista enlazada en C#?

entries.RemoveWhereTrue(e => e.id == searchId); 

edición: ¿Alguien puede volver a abrir esta pregunta para mí? NO es un duplicado, la pregunta de la que se supone que es un duplicado es sobre la clase List. List.RemoveAll no funcionará, eso es parte de la clase List.

+0

He aquí una respuesta a una pregunta duplicado Slavo

Respuesta

3
list.Remove(list.First(e => e.id == searchId)); 
+1

Ver mi respuesta: el método RemoveAll realmente acepta un predicado como parámetro. – Slavo

+0

Excepto que no hay un método RemoveAll en LinkedList . –

+1

Esta pregunta es acerca de una LinkedList, que no tiene un método RemoveAll. –

1

Simplemente use el método de extensión Where. Obtendrás una nueva lista (IIRC).

2

Aquí es una solución simple:

list.Remove(list.First((node) => node.id == searchId)); 
+0

Obtiene mi voto, ya que no puedo votar por mí mismo :) –

Cuestiones relacionadas