How to delete an element from an array in C# How to delete an element from an array in C# arrays arrays

How to delete an element from an array in C#


If you want to remove all instances of 4 without needing to know the index:

LINQ: (.NET Framework 3.5)

int[] numbers = { 1, 3, 4, 9, 2 };int numToRemove = 4;numbers = numbers.Where(val => val != numToRemove).ToArray();

Non-LINQ: (.NET Framework 2.0)

static bool isNotFour(int n){    return n != 4;}int[] numbers = { 1, 3, 4, 9, 2 };numbers = Array.FindAll(numbers, isNotFour).ToArray();

If you want to remove just the first instance:

LINQ: (.NET Framework 3.5)

int[] numbers = { 1, 3, 4, 9, 2, 4 };int numToRemove = 4;int numIndex = Array.IndexOf(numbers, numToRemove);numbers = numbers.Where((val, idx) => idx != numIndex).ToArray();

Non-LINQ: (.NET Framework 2.0)

int[] numbers = { 1, 3, 4, 9, 2, 4 };int numToRemove = 4;int numIdx = Array.IndexOf(numbers, numToRemove);List<int> tmp = new List<int>(numbers);tmp.RemoveAt(numIdx);numbers = tmp.ToArray();

Edit: Just in case you hadn't already figured it out, as Malfist pointed out, you need to be targetting the .NET Framework 3.5 in order for the LINQ code examples to work. If you're targetting 2.0 you need to reference the Non-LINQ examples.


int[] numbers = { 1, 3, 4, 9, 2 };numbers = numbers.Except(new int[]{4}).ToArray();


You can also convert your array to a list and call remove on the list. You can then convert back to your array.

int[] numbers = {1, 3, 4, 9, 2};var numbersList = numbers.ToList();numbersList.Remove(4);