我有一个数组:
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)
这会创建另一个包含其他答案的新元素的数组.这是因为您无法从数组中删除或添加元素.数组具有固定大小.
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)