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

时间:2015-01-15 14:02:26

标签: c# arrays linq

我有一个数组:

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]

4 个答案:

答案 0 :(得分:116)

您可以使用Skip轻松完成此操作:

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

这会创建另一个包含其他答案的新元素的数组。这是因为您无法从数组中删除或添加元素。数组具有固定的大小。

答案 1 :(得分:12)

你可以试试这个:

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

答案 2 :(得分:2)

如何:

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

答案 3 :(得分:1)

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

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