我有List
,即[0.1, 0.3, 0.8, 0.3, 0.4, 0.7, 0.9, 0.5]
。如何通过提供要从原始列表中删除的索引列表RemoveRange
来进行[0, 4, 2, 7, 8]
?
List(T).RemoveRange
在我的情况下不起作用,因为它被定义为
public void RemoveRange(int index, int count)
此外,我不希望使用for
循环并迭代检查列表。还有其他方法吗?
答案 0 :(得分:4)
您可以使用LINQ' Enumerable.Where
来保留所有不在索引列表中的内容:
list = list.Where((d, index) => !indices.Contains(index)).ToList();
另一个"不太优雅"方法是使用向后循环和List.RemoveAt
:
indices.Sort();
for (int i = indices.Count - 1; i >= 0; i--)
list.RemoveAt(indices[i]);