Home
Map
List Remove ExamplesUse Remove, RemoveRange and RemoveAt on Lists. Delete elements by value and index.
C#
This page was last reviewed on Apr 25, 2023.
Remove, List. For a C# List, the Remove() method eliminates elements. We remove by index, value, or by condition (a lambda). Each approach has its proper use.
List
Shows a list
Method notes. The Remove method is effective for removing by value. But we may also use RemoveAt to remove an element at an index.
Remove example. We can remove based on the element value (with Remove), or based on the index (with RemoveAt). This is not equivalent to assigning an element to null.
Step 1 We create a List and add several strings to it. This List is used to demonstrate how Remove methods work.
Step 2 We call Remove to remove an element by its value. So the element with the value "BB" is removed.
Step 3 The example shows RemoveAt. It removes the element at index 1, which is the second element, "BB."
Shows a list
using System; using System.Collections.Generic; // Step 1: create List. List<string> values = new List<string>(); values.Add("AA"); values.Add("BB"); values.Add("CC"); // Step 2: remove by value. values.Remove("BB"); Console.WriteLine(string.Join(";", values)); // Step 3: remove by index. values.RemoveAt(1); Console.WriteLine(string.Join(";", values));
AA;CC AA
RemoveRange. This can remove elements in a certain series of indexes. One useful way to use this method is to remove the first or last several elements at once.
Next We remove all elements except the last two. The code is robust because it uses Math.Max to avoid negative parameters.
Math.Max, Math.Min
using System; using System.Collections.Generic; List<int> list = new List<int>(); list.Add(1); list.Add(2); list.Add(3); list.Add(4); list.Add(5); // Remove all except last 2 int remove = Math.Max(0, list.Count - 2); list.RemoveRange(0, remove); foreach (int i in list) { Console.Write(i); }
45
RemoveRange, example 2. Here we use RemoveRange to remove the first N elements in a List. We also use Math.Min here to avoid arguments that are too large and would raise an exception.
using System; using System.Collections.Generic; List<int> list = new List<int>(); list.Add(1); list.Add(2); list.Add(3); list.Add(4); list.Add(5); // Remove first 2 elements int remove = Math.Min(list.Count, 2); list.RemoveRange(0, remove); foreach (int i in list) { Console.Write(i); }
345
RemoveAt. The RemoveAt() method removes one element. How is this method on the List type implemented in .NET? It requires an index argument.
Detail In this program we specify that a List be instantiated with three strings (the words in the name of this website).
Next We remove the string at index 1, which is the second string. The List now contains only two strings: "dot" and "perls."
var
String Literal
using System; using System.Collections.Generic; var list = new List<string>(); list.Add("dot"); list.Add("net"); list.Add("perls"); list.RemoveAt(1); foreach (string element in list) { Console.WriteLine(element); }
dot perls
Notes, performance. Methods on List that remove elements require linear time. It could be faster to assign null to elements you want to erase, rather than removing them.
Note RemoveAt is faster than Remove. It doesn't need to iterate through the number of elements equal to index.
Note 2 You can use RemoveAll to remove all elements in the List that match a certain predicate expression.
Tip It is often easiest to use the lambda expression syntax with the RemoveAll method, which can reduce line count.
List RemoveAll
Discussion. When you call RemoveAt, all the element following the index you remove will be copied and shifted forward. This is not efficient.
However If you want to remove an element but eliminate copying, you could simply assign it to null or a default() expression.
null
default
Also The Insert method on List suffers from a similar performance drawback. It causes excessive element copying.
List Insert
A review. We invoked the Remove, RemoveAt, RemoveAll and RemoveRange methods. We found out how to remove the first and last elements, and reviewed algorithmic complexity.
Dot Net Perls is a collection of tested code examples. Pages are continually updated to stay current, with code correctness a top priority.
Sam Allen is passionate about computer languages. In the past, his work has been recommended by Apple and Microsoft and he has studied computers at a selective university in the United States.
This page was last updated on Apr 25, 2023 (edit).
Home
Changes
© 2007-2024 Sam Allen.