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

我有一个数组:

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]

125109 次浏览

你可以试试这个:

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

我们根据已有的数组创建一个列表,删除0位置的元素并进行强制转换 数组的结果。

或者这样:

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

其中我们使用了重载版本的 Where,它也将项的索引作为参数。请看 给你

更新

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

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

使用 数不胜数,在哪里的第二重载:-

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();

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