2011-12-30 57 views
0

有在C#中的數組得到數組中的元素在C#

string[] arr = new string[] {"1","A","D","3","5","AF","34","TU","E","OP","4"}; 

所以,我怎麼能得到這個數組中的元素,如下面

string[] fromArr = new string[5]; 
fromArr = {"D","3","5","AF","34"}; 

不要ü知道任何方法或任何方式來做到這一點?

+1

定義中。你想要多少?它是固定大小還是基於數組大小? – 2011-12-30 15:42:04

+1

[C#數組,從現有數組獲取子數組]的可能重複(http://stackoverflow.com/questions/943635/c-sharp-arrays-getting-a-sub-array-from-an-existing -array) – John 2011-12-30 15:42:20

+0

http://msdn.microsoft.com/en-us/library/z50k9bft.aspx – wiero 2011-12-30 15:42:29

回答

7

最簡單的方法是使用LINQ2Objects

var fromArr = arr.Skip(2).Take(5).ToArray(); 

最高效的方法是使用Array.Copy,但這些代碼會更繁瑣寫,你需要去弄清楚自己,包括處理所有當陣列不夠長時,會出現邊緣情況。

但是,如果您只需使用結果幾次就不需要將其複製回數組,那麼您可以使用LINQ2SQL的惰性評估功能

IEnumerable<string> fromArr = arr.Skip(2).Take(5); 

然後你可以在循環中使用fromArr或者甚至沒有在第一個地方複製數據。

當我考慮它時,您可能也會選擇使用ArraySegment<string>而不是複製到新陣列。

但爲了可讀性和簡單性,堅持使用LINQ版本,除非您有真正的理由使用另一種替代方法。

2

使用LINQ此

arr.Skip(2).Take(5).ToArray() 
2

您可以使用Array.copy採取數組的一個切片,爲您的示例:

string[] arr = new string[] {"1","A","D","3","5","AF","34","TU","E","OP","4"}; 
string[] fromArr = new string[5]; 
Array.Copy(arr, 2, fromArr, 0, 5);