2011-06-29 12 views
1

リストからインデックスのセットを削除する方法を探しています。これにより、私は動物の文字列リストから削除したいex、0,1,5,7のインデックスのリストを持っています。 1回のショットで指標0,1,5,7ですべての動物を取り除く方法が必要です。これは、動物リストを繰り返して、各反復で0,1,5,7で動物を削除すると、リスト構造が変化し、更新された動物リストには該当しないからです。リスト内のアイテムを一度にインデックスで削除する#

おかげ

答えて

7

まあ、一つの選択肢はではなく、最高の1で始まる、それらを削除することです。例:

foreach (var index in indexesToDelete.OrderByDescending(x => x)) 
{ 
    list.RemoveAt(index); 
} 

たとえば、項目5を削除しても、項目0-4には影響しません。

1

@ Jon Skeetによると、リストをコピーして、不要な項目を残しておくこともできます。

List<string> copy = new List<string>(list.Count - indexesToDelete.Count); 
for (int index = 0; index < list.Count; index++) 
{ 
    if (!indexesToDelete.Contains(index)) 
     copy.Add(list[index]); 
} 
list = copy; 

私はこれがJonの答えよりも改善されていると主張しているわけではありません。私はこのアプローチが好まれるかもしれないいくつかの風景を想像することができます。

関連する問題