2008-09-25 6 views
5

Ho una lista Linked, dove Entry ha un membro chiamato id. Voglio rimuovere la voce dall'elenco in cui id corrisponde a un valore di ricerca. Qual'è il miglior modo per farlo? Non voglio usare Remove(), perché Entry.Equals confronterà altri membri e voglio solo abbinare su id. Spero di fare qualcosa del genere:Come rimuovo un elemento che corrisponde a un determinato criterio da una lista collegata in C#?

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

modifica: qualcuno può riaprire questa domanda per me? NON è un duplicato - la domanda che si suppone sia un duplicato riguarda la classe List. List.RemoveAll non funzionerà - fa parte della classe List.

+0

Ecco una risposta ad una domanda duplicato Slavo

risposta

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

Vedere la mia risposta: il metodo RemoveAll accetta effettivamente un predicato come parametro. – Slavo

+0

Tranne che non esiste alcun metodo RemoveAll su una lista collegata . –

+1

Questa domanda riguarda una lista collegata, che non ha un metodo RemoveAll. –

1

Basta usare il metodo di estensione Where. Otterrai una nuova lista (IIRC).

2

Ecco una soluzione semplice:

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

Ottiene il mio voto, poiché non posso votare per me :) –