我有一个节点的LinkedList,每个节点都存储一个LinkedList的边缘.我想做一些事情
nodes.RemoveAll(n => n.edges.Count == 0)
Run Code Online (Sandbox Code Playgroud)
但是如果没有RemoveAll就可以了.我不明白为什么它没有它,因为其他收藏品.这也必须遍历所有元素,并且一次只从我理解的内容中删除一个元素,这对于链表来说并不是坏事.
现在我必须这样做:
for (LinkedListNode<MyNode> n2 = nodes.First; n2 != null; )
{
LinkedListNode<MyNode> temp = n2.Next;
if (n2.Value.edges.Count == 0)
nodes.Remove(n2);
n2 = temp;
}
Run Code Online (Sandbox Code Playgroud)
虽然它有效但它使事情看起来比它们更复杂.
当我进入我需要从列表中删除项目的场景时,我正在编写一些ASP.NET控件,只有当它们匹配某个条件时才会这样.
RemoveAll泛型List类的方法做得很好,但删除了与谓词指定的条件匹配的所有项.
如果我只想删除指定条件的特定数量的项目怎么办?您认为最好的方法是什么?