Как удалить первый элемент в массиве?
У меня есть массив:
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]
?
Ответы
Ответ 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;