Подтвердить что ты не робот

Как удалить первый элемент в массиве?

У меня есть массив:

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

Я хочу удалить только arr[0] и сохранить arr[1] и arr[2].
Я использовал:

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

Так как arr[0] и arr[2] имеют одно и то же значение ( "a" ), результат, который я получаю, равен только arr[1].

Как я могу вернуть оба arr[1] и arr[2] и удалить только arr[0]?

4b9b3361

Ответ 1

Вы можете легко сделать это, используя Skip:

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

Это создает другой массив с новыми элементами, как в других ответах. Это потому, что вы не можете удалить или добавить элементы в массив. Массивы имеют фиксированный размер.

Ответ 2

Вы можете попробовать следующее:

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

Мы делаем список на основе массива, который у нас уже есть, мы удаляем элемент в позиции 0 и делаем результат в массив.

или это:

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

где мы используем перегруженную версию Where, которая принимает в качестве аргумента также индекс элемента. Пожалуйста, посмотрите здесь.

Обновление

Другой способ, более элегантный, чем выше, как отметил D Stanley, заключается в использовании метода Skip:

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

Ответ 3

Использовать вторую перегрузку Перечислить. Где: -

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

Ответ 4

Как насчет:

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