web-dev-qa-db-fra.com

Comment supprimer le premier élément d'un tableau?

J'ai un tableau:

arr[0]="a"  
arr[1]="b"  
arr[2]="a"  

Je veux supprimer seulement arr[0], et garderarr[1] et arr[2].
J'utilisais:

arr= arr.Where(w => w != arr[0]).ToArray();  

Puisque arr[0] et arr[2] a la même valeur ("a"), le résultat obtenu est seulement arr[1].

Comment puis-je retourner les deux arr[1] et arr[2], et ne supprime que arr[0]?

43
user990635

Vous pouvez facilement le faire en utilisant Skip:

arr = arr.Skip(1).ToArray();  

Cela crée un autre tableau avec de nouveaux éléments, comme dans d'autres réponses. C'est parce que vous ne pouvez pas supprimer ou ajouter des éléments à un tableau. Les tableaux ont une taille fixe.

130
Selman Genç

Vous pouvez essayer ceci:

arr = arr.ToList().RemoveAt(0).ToArray();

Nous faisons une liste basée sur le tableau que nous avons déjà, nous retirons l’élément à la position 0 et convertissons le résultat en tableau.

ou ca:

arr = arr.Where((item, index)=>index!=0).ToArray();

où nous utilisons la version surchargée de Where, qui prend également pour argument l'index de l'élément. S'il vous plaît jeter un oeil ici .

Mettre à jour

Une autre façon, plus élégante que celle ci-dessus, comme le fait remarquer D Stanley , consiste à utiliser la méthode Skip:

arr = arr.Skip(1).ToArray(); 
13
Christos

Que diriez-vous:

if (arr.Length > 0)
{
    arr = arr.ToList().RemoveAt(0).ToArray();
}
return arr;
2
User999999

Utilisez la seconde surcharge de Enumerable.Where : -

arr = arr.Where((v,i) => i != 0).ToArray();
1
Rahul Singh