Si desea eliminar todas las instancias de 4 sin necesidad de conocer el índice:
LINQ: (.NET Framework 3,5)
int[] numbers = { 1, 3, 4, 9, 2 };
int numToRemove = 4;
numbers = numbers.Where(val => val != numToRemove).ToArray();
no -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();
Si desea eliminar sólo la primera instancia:
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();
no 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();
Editar: En caso de que aún no lo han descubierto, como Malfist señaló, es necesario que se apuntan a .NET Framework 3.5 para que los ejemplos de código de LINQ para trabajar. Si está orientando 2.0, necesita hacer referencia a los ejemplos que no son LINQ.
¿Qué pasa si usted tiene valores duplicados en su lista? ¿Desea simplemente eliminar la primera instancia o todas las instancias? – BenAlabaster
sí, no tengo valores duplicados, ¿alguna idea? – ahmed
ahmed ¿Quiere decir, no, no, o sí? (no insulta tu inglés, solo pídeme una aclaración) – Malfist