8

假设我有一个包含 10 个项目的列表。

List<char> chars = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J'];

我需要一个新列表,其中包含列表中除第 n 个(例如,第 3 个项目'C')之外的所有元素。我不希望更改原始列表,因为我以后需要它。

另一种选择是,我可以克隆列表并删除该项目,但是必须将第 n 个之后的所有项目上移。

有没有办法使用 Linq 获取列表?

编辑:

一个字符可以在列表中出现多次。我只想删除“n”处的出现。

4

2 回答 2

18

当然,使用它的重载Where需要一个索引参数:

var allBut3 = chars.Where((c, i) => i != 2);  // use 2 since Where() uses 0-based indexing
于 2013-04-15T13:56:39.453 回答
0

你可以使用Enumerable.Where方法。

根据谓词过滤一系列值。

List<char> chars = new List<char>(){'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J'};
var newlist = chars.Where(n => n != chars.ElementAtOrDefault(2));

这是一个DEMO.

于 2013-04-15T13:59:59.107 回答