从列表中删除特定对象

9

我有一个类,其中有一个list<Book>,而这些Book对象具有许多属性。 如何从该列表中删除每个其level值与5不同的书?

4个回答

28
在这种情况下,List<T>.RemoveAll可能是你的好帮手:
C# 3:
list.RemoveAll(x => x.level != 5);

C# 2:


(说明:这句话为标题,本身无需翻译,仅做说明)
list.RemoveAll(delegate(Book x) { return x.level != 5; });

我们能不能执行列表的 Remove(x => x.level == 5); 操作呢?如果我们想要移除一个 level 为 5 的书。 - user2603796
@FarazAhmad:你可以使用list.RemoveAll(x => x.level == 5)。但是,没有重载的Remove接受谓词。 - Jon Skeet

5

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


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

1

虽然List.RemoveAll()是一个很好的解决方案,但它会在集合上执行“foreach”,导致O(n)或更差的性能。如果列表中有很多项,我建议您查看Erick的Index 4 Objects集合。

请参见http://www.codeplex.com/i4o


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接