2010-02-21 53 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)