简体   繁体   中英

How to get all elements except the n'th element in a List using Linq

Say I have a list of 10 items.

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

I need a new List containing all the elements in the List except n'th (say, 3rd item 'C' ). I don't want the original list to be altered since I need it later.

Another option is, I can clone the list and remove the item, but then all the items after the n'th has to be shifted up.

Is there a way to get the list using Linq?

Edit:

A character can occur multiple times in the List. I want only the occurance at 'n' to be removed.

当然,使用Where接受索引参数的重载

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

You can use Enumerable.Where method.

Filters a sequence of values based on a predicate.

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

Here is a DEMO .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM