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

我有一个数组:

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]

你可以使用Skip轻松完成:

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

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

你可以试试这个:

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

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

或这个:

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

我们在哪里使用Where的重载版本,它也作为参数作为项目的索引。 请看这里 。

更新

另一种方式,就像D Stanley指出的那样,比上面更优雅的是使用Skip方法:

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

怎么样:

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

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

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