Я не могу сказать, почему этот метод не существует. Казалось бы, полезный способ иметь. Вы можете добавить его самостоятельно, используя метод расширения. Вот моя (вероятно, неудачная и не проверенная) попытка сделать это:
public static class LinkedListExtensions
{
public static void RemoveAll<T>(this LinkedList<T> linkedList,
Func<T, bool> predicate)
{
for (LinkedListNode<T> node = linkedList.First; node != null; )
{
LinkedListNode<T> next = node.Next;
if (predicate(node.Value))
linkedList.Remove(node);
node = next;
}
}
}
Тогда это работает:
nodes.RemoveAll(n => n.edges.Count == 0);
В качестве альтернативы вы можете инвертировать критерий, чтобы выбрать элементы, которые хотите сохранить, и создать из них новый LinkedList
:
nodes = new LinkedList<MyNode>(nodes.Where(n => n.edges.Count != 0));