2010-03-22 20 views
9

Tengo una clase que tiene un list<Book> en él, y esos objetos Book tienen muchas propiedades diferentes. ¿Cómo puedo eliminar de esa lista cada Libro que su valor level es diferente que, por ejemplo, 5?Eliminar objetos específicos de una lista

Respuesta

27

En este caso particular, List<T>.RemoveAll es probablemente su amigo:

C# 3:

list.RemoveAll(x => x.level != 5); 

C# 2:

list.RemoveAll(delegate(Book x) { return x.level != 5; }); 
+0

Muchas gracias! – iTayb

+0

podemos hacer la lista.Quitar (x => x.level == 5) ;? Si queremos eliminar un libro cuyo nivel es 5. –

+0

@FarazAhmad: puede usar 'list.RemoveAll (x => x.level == 5)'. Sin embargo, no hay una sobrecarga de 'Remove', que toma un predicado. –

5

list.RemoveAll(bk => bk.Level != 5);

1
list.RemoveAll(delegate(Book b) { return b.Level == 5; }); 
1

Aunque la lista. RemoveAll() es una excelente solución, hace un "foreach" en la colección que resulta en O (n) o peor rendimiento. Si tiene muchos elementos en la lista, le sugiero que consulte las colecciones de Erick's Index 4 Objects.

Ver http://www.codeplex.com/i4o

Cuestiones relacionadas