Найти и удалить предметы из коллекции

Каков наилучший способ удалить набор из коллекции, но при этом сохранить элементы, которые были удалены, в отдельной коллекции?

Я написал метод расширения, который делает это, но я думаю, что должен быть лучший способ. Вот моя функция:

public static List<T> FindAndRemove<T>(this List<T> lst, Predicate<T> match)
{
    List<T> ret = lst.FindAll(match);
    lst.RemoveAll(match);
    return ret;
}

И вы бы использовали это так:

List<String> myList = new List<String>();
myList.Add("ABC");
myList.Add("DEF");
myList.Add("ABC");
List<String> removed = myList.FindAndRemove(x => x == "ABC");
// myList now contains 1 item (DEF)
// removed now contains 2 items (ABC, ABC)

Я не уверен на 100%, что происходит за кулисами вFindAll а такжеRemoveAll методы, но я думаю, что лучше было бы как-то «перенести» элементы из одного списка в другой.

Ответы на вопрос(4)

Ваш ответ на вопрос