2010-02-21 4 views
2

J'ai une liste avec des objets. Chaque objet a un identifiant. Je veux supprimer tous les objets dont leurs ID apparaissent dans une collection donnée. Je sais que dans 3.5, il existe des fonctions telles que RemoveAll qui peuvent faciliter la recherche et supprimer..NET 3.5: Comment supprimer de la liste en utilisant les fonctions 3.5

prototype de la fonction est:

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

Quelle est la meilleure façon de supprimer de la liste?
Merci.

Répondre

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

Ce vérifie chaque élément de la liste une fois, et effectue une recherche clé dans le dictionnaire, il est plus ou moins O (N) parce clés sont rapides recherches. Si vous parcourez les touches en boucle, vous devrez effectuer une recherche linéaire dans la liste à chaque fois, ce qui nécessitera O (N * M), où M est le nombre de clés dans le dictionnaire.

0

Pour liste, vous pouvez le faire:

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)