Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从C#中的LinkedList中删除与给定条件匹配的元素?_C#_.net_Data Structures - Fatal编程技术网

如何从C#中的LinkedList中删除与给定条件匹配的元素?

如何从C#中的LinkedList中删除与给定条件匹配的元素?,c#,.net,data-structures,C#,.net,Data Structures,我有一个LinkedList,其中条目有一个名为id的成员。我想从id与搜索值匹配的列表中删除该条目。最好的方法是什么?我不想使用Remove(),因为Entry.Equals将比较其他成员,我只想在id上进行匹配。我希望这样做: entries.RemoveWhereTrue(e => e.id == searchId); 编辑:有人能帮我重新打开这个问题吗?它不是一个副本-它应该是一个副本的问题是关于List类的。List.RemoveAll不起作用-这是List类的一部分。只需使用

我有一个LinkedList,其中条目有一个名为id的成员。我想从id与搜索值匹配的列表中删除该条目。最好的方法是什么?我不想使用Remove(),因为Entry.Equals将比较其他成员,我只想在id上进行匹配。我希望这样做:

entries.RemoveWhereTrue(e => e.id == searchId);

编辑:有人能帮我重新打开这个问题吗?它不是一个副本-它应该是一个副本的问题是关于List类的。List.RemoveAll不起作用-这是List类的一部分。

只需使用Where扩展方法即可。您将获得一个新列表(IIRC)。

这里有一个简单的解决方案:

list.Remove(list.First((node) => node.id == searchId));

请参阅我的答案-RemoveAll方法实际上接受谓词作为参数。除了LinkedList上没有RemoveAll方法之外。这个问题是关于LinkedList的,它没有RemoveAll方法。“尽管不幸的是,它需要在列表中进行两次迭代,而不是像我的解决方案中那样进行一次迭代”no。删除(LinkedListNode)是O(1)这是一个重复问题的答案
list.Remove(list.First((node) => node.id == searchId));