如何使用Linq获取除List中第n个元素之外的所有元素

时间:2013-04-15 13:55:18

标签: c# linq

说我有10个项目的清单。

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

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

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

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

修改

字符可以在列表中多次出现。我只希望删除'n'处的出现。

2 个答案:

答案 0 :(得分:17)

当然,使用带有索引参数的overload of Where

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

答案 1 :(得分: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