2010-02-21 73 views
2

我有一个包含对象的List。每个对象都有一个ID。我想删除其ID在给定集合中出现的所有对象。 我知道在3.5中有一些可以方便搜索和删除的功能,例如RemoveAll。.NET 3.5:如何使用3.5函数从列表中删除

该函数的原型为:

internal SomeObject removeFromMe(Dictionary<string, string> idsToRemoveAreTheKeys) 

什么是从列表中删除的最佳方式?
谢谢。

回答

4
list.RemoveAll(item => idsToRemoveAreTheKeys.ContainsKey(item.ID)); 

此列表中的检查每个项一次,并且执行在字典中键查找,所以它的大致O(N),因为键查找是快速的。

如果你通过键循环,你必须每次都通过列表进行线性搜索,这需要O(N * M),其中M是字典中键的数量。

0

对于列表,你可以这样做:

Dim sam As New List(Of Integer) From {1, 2, 3, 4, 5, 6, 7, 8, 9, 10} 
    sam.RemoveAll(Function(x) x Mod 2 = 0) 

    var sam = New List<int> {1, 2, 3, 4, 5, 6, 7, 8, 9, 10} 
    sam.RemoveAll(x => x % 2 = 0)