说我有10个项目的清单。
List<char> chars = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J'];
我需要一个新的List,其中包含List中除n之外的所有元素(例如,第3项'C'
)。我不希望改变原始列表,因为我以后需要它。
另一个选择是,我可以克隆列表并删除该项目,但是在第n个之后的所有项目都必须向上移动。
有没有办法使用Linq获取列表?
修改
字符可以在列表中多次出现。我只希望删除'n'处的出现。
答案 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
。