2017-04-19 48 views
1

什麼是從給定範圍拆分數組的C#代碼。 如:從給定範圍拆分數組

int[] arr = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20} 

我想將它拆分arr成兩個陣列。一個從0到5指數,另一個從6到20指數。

在Java Arrays.copyOfRange()可用於此過程。這是什麼C#代碼?

+2

'arr.Take(5).ToArray()'和'arr.Skip(5).ToArray()' –

+0

由於這是一個重複的我在那裏回答:http://stackoverflow.com/a/43491049/284240一般來說'Array.Copy'比枚舉數組更有效率,直到你處於給定索引並用'ToArray'創建一個新數組。對於小型陣列來說,這是微型優化。但是由於醜陋的'Array.Copy'隱藏在擴展方法中,所以不需要關心可讀代碼。 –

回答

6

嘗試使用的Linq

using System.Linq; 

... 

int[] arr = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20}; 

int[] head = arr.Take(5).ToArray(); 
int[] tail = arr.Skip(5).ToArray(); 
+0

謝謝,如果我想要從索引5到索引10並創建一個新數組,請怎麼辦?有沒有直接的方法。 – ANJ

+0

@ANJ:從索引5到10中的項目只需結合'Skip'和'Take':'int [] middle = arr.Skip(5).Take(5).ToArray();' –