如何删除数组中的第一个元素?

How to remove the first element in an array?

我有一个数组:

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]

如何 return 同时 arr[1]arr[2],并且只删除 arr[0]

你可以试试这个:

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

我们根据已有的数组做一个列表,我们去掉0位置的元素,并进行投射 结果到数组。

或者这个:

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

我们使用 Where 的重载版本,它也将项目的索引作为参数。请看here.

更新

正如D Stanley指出的那样,另一种比上述方法更优雅的方法是使用Skip方法:

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

使用 Enumerable.Where 的第二个重载:-

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

怎么样:

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

您可以使用 Skip 轻松做到这一点:

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

这将创建另一个包含新元素的数组,就像在其他答案中一样。这是因为您不能从数组中删除或添加元素。数组有固定大小。