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

use*_*635 45 c# linq arrays

我有一个数组:

arr[0]="a"  
arr[1]="b"  
arr[2]="a"  
Run Code Online (Sandbox Code Playgroud)

我想只删除arr[0],并保持 arr[1]arr[2].
我用的是:

arr= arr.Where(w => w != arr[0]).ToArray();  
Run Code Online (Sandbox Code Playgroud)

由于arr[0]并且arr[2]具有相同的值("a"),我得到的结果只是arr[1].

我怎么能同时返回arr[1]arr[2],只有删除arr[0]

Sel*_*enç 137

您可以使用Skip以下方法轻松完成:

arr = arr.Skip(1).ToArray();  
Run Code Online (Sandbox Code Playgroud)

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

  • 要使用这个(以及问题的其他答案),您需要声明“using System.Linq;” (7认同)

Chr*_*tos 14

你可以试试这个:

arr = arr.ToList().RemoveAt(0).ToArray();
Run Code Online (Sandbox Code Playgroud)

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

或这个:

arr = arr.Where((item, index)=>index!=0).ToArray();
Run Code Online (Sandbox Code Playgroud)

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

更新

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

arr = arr.Skip(1).ToArray(); 
Run Code Online (Sandbox Code Playgroud)

  • 第一个解决方案不起作用,因为`RemoveAt(0)`是一个过程,并且不返回列表,因此您可以在...上调用`ToArray()`。 (2认同)