web-dev-qa-db-ja.com

配列の最初の要素を削除する方法は?

私は配列を持っています:

arr[0]="a"  
arr[1]="b"  
arr[2]="a"  

removeのみarr[0]、およびkeeparr[1]およびarr[2]にしたい。
使用していたもの:

arr= arr.Where(w => w != arr[0]).ToArray();  

arr[0]arr[2]は同じ値( "a")であるため、取得する結果はarr[1]のみです。

arr[1]arr[2]の両方を返し、arr[0]のみを削除するにはどうすればよいですか?

43
user990635

Skipを使用して簡単に実行できます:

arr = arr.Skip(1).ToArray();  

これにより、他の回答のように新しい要素を持つ別の配列が作成されます。配列から要素を削除したり要素を追加したりできないためです。配列のサイズは固定されています。

130
Selman Genç

これを試すことができます:

arr = arr.ToList().RemoveAt(0).ToArray();

すでに持っている配列に基づいてリストを作成し、0の位置にある要素を削除して、結果を配列にキャストします。

またはこれ:

arr = arr.Where((item, index)=>index!=0).ToArray();

Whereのオーバーロードバージョンを使用します。これは、アイテムのインデックスも引数として受け取ります。ご覧ください こちら

更新

D Stanley が指摘したように、上記よりもエレガントな別の方法は、Skipメソッドを使用することです。

arr = arr.Skip(1).ToArray(); 
13
Christos

方法について:

if (arr.Length > 0)
{
    arr = arr.ToList().RemoveAt(0).ToArray();
}
return arr;
2
User999999

Enumerable.Where :-の2番目のオーバーロードを使用します

arr = arr.Where((v,i) => i != 0).ToArray();
1
Rahul Singh