我有一个数组:
arr[0]="a" arr[1]="b" arr[2]="a"
我想 拿开只有 arr[0],和 留着 arr[1]和 arr[2]。 我用的是:
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();
其中我们使用了重载版本的 Where,它也将项的索引作为参数。请看 给你。
Where
更新
正如 D Stanley指出的,另一种比上述方法更优雅的方法是使用 Skip方法:
Skip
arr = arr.Skip(1).ToArray();
使用 数不胜数,在哪里的第二重载:-
arr = arr.Where((v,i) => i != 0).ToArray();
怎么样:
if (arr.Length > 0) { arr = arr.ToList().RemoveAt(0).ToArray(); } return arr;
你可以很容易地使用 Skip:
这将创建另一个包含新元素的数组,就像在其他答案中一样。这是因为您不能从数组中删除或向数组中添加元素。数组的大小是固定的。