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

C# 如何删除数组中的第一个元素?,c#,arrays,linq,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]?您可以尝试以下方法: arr = arr.ToList().RemoveAt(0).T

我有一个数组:

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]

您可以尝试以下方法:

arr = arr.ToList().RemoveAt(0).ToArray();
我们根据已经拥有的数组创建一个列表,删除0位置的元素并强制转换 将结果添加到数组中

或者这个:

arr = arr.Where((item, index)=>index!=0).ToArray();
其中我们使用了重载版本的
,其中
,它还将项的索引作为参数。请看一看

更新

如前所述,另一种比上述方法更优雅的方法是使用
Skip
方法:

arr = arr.Skip(1).ToArray(); 
使用第二个过载:-

那么:

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

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

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

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

这只是选择列表更好的众多原因之一。您可以使用不同的重载来提供索引:
。其中((w,i)=>i>0)
但是
。跳过(1)
甚至不必担心您的条件。是的。非常直截了当,以前没见过。很不错的。慢慢地正确地了解您的工具并了解它们包含的功能是非常好的。谢谢。要使用这个(以及问题的其他答案),您需要使用System.Linq我希望有一个像
.DropFirst()
这样的东西的官方扩展。第一个解决方案不能像
RemoveAt(0)
那样工作。它是一个过程,并且不会返回列表,这样你就可以调用
ToArray()
了……我取消了上一次编辑,因为它没有改善IMHO的答案。
arr = arr.Skip(1).ToArray();