如何删除数组中的第一个元素?
How to remove the first element in an array?
我有一个数组:
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]
。
如何 return 同时 arr[1]
和 arr[2]
,并且只删除 arr[0]
?
你可以试试这个:
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();
使用 Enumerable.Where 的第二个重载:-
arr = arr.Where((v,i) => i != 0).ToArray();
怎么样:
if (arr.Length > 0)
{
arr = arr.ToList().RemoveAt(0).ToArray();
}
return arr;
您可以使用 Skip
轻松做到这一点:
arr = arr.Skip(1).ToArray();
这将创建另一个包含新元素的数组,就像在其他答案中一样。这是因为您不能从数组中删除或添加元素。数组有固定大小。
我有一个数组:
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]
。
如何 return 同时 arr[1]
和 arr[2]
,并且只删除 arr[0]
?
你可以试试这个:
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();
使用 Enumerable.Where 的第二个重载:-
arr = arr.Where((v,i) => i != 0).ToArray();
怎么样:
if (arr.Length > 0)
{
arr = arr.ToList().RemoveAt(0).ToArray();
}
return arr;
您可以使用 Skip
轻松做到这一点:
arr = arr.Skip(1).ToArray();
这将创建另一个包含新元素的数组,就像在其他答案中一样。这是因为您不能从数组中删除或添加元素。数组有固定大小。