我有一个节点的List
,其中每个节点都有一些坐标。
public class Node
{
float x,y;
....
}
List<Node> myNodeList;
我需要从列表中删除每个与其相邻节点的距离小于给定阈值的节点。我读了这篇文章,解释了如何在迭代时从集合中删除元素
我更喜欢使用RemoveAll
的方式,而不是以相反的顺序迭代列表,因为我认为它更干净、更优雅。我的问题是,我需要访问当前项目的相邻元素,以计算距离。
有干净的方法吗?
我需要类似的东西:
myNodeList.RemoveAll(item => DistanceLessThanThreshold (item.Value, nextNode) && DistanceLessThanThreshold (item.Value, prevNode);
这可能吗?
您可以使用反向where,而不是在迭代时删除,并通过编写扩展方法removewhere来创建一个新列表,如-中所建议的
linq从属性等于值的对象数组中删除项
当然,创建一个新列表是否可以接受——这取决于列表的大小!