2011-06-29 88 views
1

我正在尋找一種方法來從列表中刪除一組索引。通過這個我的意思是,我有一個ex,0,1,5,7的索引列表,我想從字符串列表中刪除動物。我需要一種方法來一次性去除指數爲0,1,5,7的所有動物。這是因爲如果我遍歷動物列表並在每次迭代中刪除動物0,1,5,7,則列表結構會發生變化,並且這些變量不再適用於更新的動物列表。通過c索引一次刪除列表中的項目#

感謝

回答

7

那麼,一個選擇是刪除它們開始,而不是最高的國家之一。例如:

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; 

我不是聲稱這是對喬恩答案的改進,只是它是一種選擇。我可以想象一些場景,這種方法可能是首選。

相關問題