我正在尋找一種方法來從列表中刪除一組索引。通過這個我的意思是,我有一個ex,0,1,5,7的索引列表,我想從字符串列表中刪除動物。我需要一種方法來一次性去除指數爲0,1,5,7的所有動物。這是因爲如果我遍歷動物列表並在每次迭代中刪除動物0,1,5,7,則列表結構會發生變化,並且這些變量不再適用於更新的動物列表。通過c索引一次刪除列表中的項目#
感謝
我正在尋找一種方法來從列表中刪除一組索引。通過這個我的意思是,我有一個ex,0,1,5,7的索引列表,我想從字符串列表中刪除動物。我需要一種方法來一次性去除指數爲0,1,5,7的所有動物。這是因爲如果我遍歷動物列表並在每次迭代中刪除動物0,1,5,7,則列表結構會發生變化,並且這些變量不再適用於更新的動物列表。通過c索引一次刪除列表中的項目#
感謝
那麼,一個選擇是刪除它們開始,而不是最高的國家之一。例如:
foreach (var index in indexesToDelete.OrderByDescending(x => x))
{
list.RemoveAt(index);
}
例如,刪除項目5不會影響項目0-4。
除了@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;
我不是聲稱這是對喬恩答案的改進,只是它是一種選擇。我可以想象一些場景,這種方法可能是首選。