2010-02-21 2 views
2

У меня есть список с объектами. Каждый объект имеет идентификатор. Я хочу удалить все объекты, которые их идентификаторы появляются в данной коллекции. Я знаю, что в 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)