1

List各ノードにはいくつかの座標があります。

public class Node
{
    float x,y;
    ....
}
List<Node> myNodeList;

隣接するノードからの距離が特定のしきい値よりも小さいリストから各ノードを削除する必要があります。コレクションの反復中にコレクションから要素を削除する方法を説明するこの投稿を読みました。

リストを逆の順序で反復するのではなく、 wayを使用RemoveAllすることをお勧めします。これは、よりクリーンでエレガントだと思うからです。私の問題は、距離を計算するために、現在のアイテムの隣接する要素にアクセスする必要があることです。

それを行うためのきれいな方法はありますか?

次のようなものが必要です:

myNodeList.RemoveAll(item => DistanceLessThanThreshold (item.Value, nextNode) && DistanceLessThanThreshold (item.Value, prevNode);

それは可能ですか?

4

1 に答える 1

1

繰り返しながら削除する代わりに、逆の where を使用して、拡張メソッド removewhere を記述して新しいリストを作成できます -

linqプロパティが値と等しいオブジェクト配列から項目を削除

もちろん、新しいリストの作成が許容される場合は、リストの大きさによって異なります。

于 2012-09-24T15:31:19.363 に答える