2010-03-22 530 views
9

我有一個其中包含list<Book>的類,而這些Book對象具有許多許多屬性。 如何從每個圖書中刪除他的level值與例如5不同?從列表中刪除特定對象

回答

27

在這種特殊情況下,List<T>.RemoveAll可能是你的朋友:

C#3:

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

C#2:

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

非常感謝! – iTayb 2010-03-22 15:34:20

+0

我們可以做list.Remove(x => x.level == 5);?如果我們想刪除一個等級爲5的書。 – 2014-02-16 20:18:56

+0

@FarazAhmad:你可以使用'list.RemoveAll(x => x.level == 5)'。 '刪除'沒有超載,但是需要一個謂詞。 – 2014-02-16 20:35:06

5

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

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

雖然名單。 RemoveAll()是一個很好的解決方案,它對O(n)或更糟的性能的集合執行「foreach」。如果列表中有很多項目,我會建議查看Erick的Index 4 Objects集合。

請參閱http://www.codeplex.com/i4o