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