使用 Linq 如何获取除第 n 个元素以外的所有元素列表

9

假设我有一个由10个项目组成的列表。

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

我需要一个新的列表,包含除了第n个(比如说,第三个项目'C')以外所有列表中的元素。由于之后我还需要使用原始列表,所以我不想改变它。
另一个选项是,我可以克隆列表并删除该项,但是在第n个之后的所有项都必须向上移动。
有没有一种使用Linq获取列表的方法?
编辑:
一个字符可以在列表中多次出现,我只想删除在第'n'个出现的字符。

我相信你可以使用 chars.Take(2).Concat(chars.Skip(3)),但我并不确定... - Nolonar
1
它会返回正确的结果,但会遍历列表两次。 - ManojRK
2个回答

19

当然,可以使用带有索引参数的 Where 的重载方法

var allBut3 = chars.Where((c, i) => i != 2);  // use 2 since Where() uses 0-based indexing

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));

这是一个 演示

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接