在给定索引列表的情况下删除列表项

时间:2015-12-03 16:00:38

标签: c# list

我有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循环并迭代检查列表。还有其他方法吗?

1 个答案:

答案 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]);