从列表中删除前 3 项

问题描述 投票:0回答:3

如何从列表中一起删除 n 个项目?

例如,在包含 10 个元素的列表中,我想使用 for cicle 一起删除 3 个项目

c# .net
3个回答
12
投票

如果您想安全地删除前三项:

list.RemoveRange(0, Math.Min(3, list.Count));

这将删除最多三个项目,但如果列表中的项目少于三个,则不会引发异常。如果列表中有 0、1 或 2 个项目,它将删除相应数量的项目。


5
投票

编辑

要在 C# 8 或更高版本中处理列表/数组的切片而不对其进行修改,我建议使用 Ranges

原创

要枚举没有前 n 个元素的列表(如果您不想修改列表),可以使用

Skip

// this will take all the elements except for the first three (these will be skipped).
IEnumerable<SomeThing> withoutFirstThree = list.Skip(3);
如果您不想枚举到列表末尾,

Skip 也可以与

Take
配合使用。正如 Skip 文档中提到的:

Take 和 Skip 方法是功能上的补充。给定一个序列 coll 和一个整数 n,连接 coll.Take(n) 和 coll.Skip(n) 的结果会产生与 coll 相同的序列。

如果您想使用

List
而不是
IEnumerable
,您可以在返回的
.ToList()
上使用
Enumerable
,但这种方法可能不适合您的用例。

如果您想修改列表,您可以使用

RemoveRange
,正如其他答案已经建议的那样。


1
投票

只删除前 3 项?

list.RemoveRange(0, 3);

删除 3 个从

index=0
开始的项目。

© www.soinside.com 2019 - 2024. All rights reserved.