我有List
个节点,每个节点都有一些坐标。
public class Node
{
float x,y;
....
}
List<Node> myNodeList;
我需要从列表中删除距离相邻节点的距离小于给定阈值的每个节点。 我读了这篇post,解释了在迭代时如何从集合中删除元素。
我更喜欢使用RemoveAll
方式,而不是以相反的顺序迭代列表,因为我觉得它更干净,更优雅。
我的问题是我需要访问当前项目的相邻元素,以计算距离。
有没有干净的方法呢?
我需要类似的东西:
myNodeList.RemoveAll(item => DistanceLessThanThreshold (item.Value, nextNode) && DistanceLessThanThreshold (item.Value, prevNode);
这可能吗?
答案 0 :(得分:1)
而不是在迭代时删除你可以使用反向where并通过编写扩展方法removewhere创建一个新列表 - 如< - p>中所示
linq remove item from object array where property equals value
当然,如果创建新列表是可以接受的 - 取决于列表的大小!