我有一个数组:
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]
?
答案 0 :(得分:116)
您可以使用Skip
轻松完成此操作:
arr = arr.Skip(1).ToArray();
这会创建另一个包含其他答案的新元素的数组。这是因为您无法从数组中删除或添加元素。数组具有固定的大小。
答案 1 :(得分:12)
你可以试试这个:
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();
答案 2 :(得分:2)
如何:
if (arr.Length > 0)
{
arr = arr.ToList().RemoveAt(0).ToArray();
}
return arr;
答案 3 :(得分:1)
使用Enumerable.Where的第二次重载: -
arr = arr.Where((v,i) => i != 0).ToArray();