有在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"};
不要ü知道任何方法或任何方式來做到這一點?
有在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"};
不要ü知道任何方法或任何方式來做到這一點?
最簡單的方法是使用LINQ2Objects
var fromArr = arr.Skip(2).Take(5).ToArray();
最高效的方法是使用Array.Copy
,但這些代碼會更繁瑣寫,你需要去弄清楚自己,包括處理所有當陣列不夠長時,會出現邊緣情況。
但是,如果您只需使用結果幾次就不需要將其複製回數組,那麼您可以使用LINQ2SQL的惰性評估功能
IEnumerable<string> fromArr = arr.Skip(2).Take(5);
然後你可以在循環中使用fromArr
或者甚至沒有在第一個地方複製數據。
當我考慮它時,您可能也會選擇使用ArraySegment<string>
而不是複製到新陣列。
但爲了可讀性和簡單性,堅持使用LINQ版本,除非您有真正的理由使用另一種替代方法。
LINQ有一些很好的方法。在你的情況下
arr.Skip(2).Take(5).ToArray()
應該產生你所需要的。
使用LINQ此
arr.Skip(2).Take(5).ToArray()
您可以使用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);
定義中。你想要多少?它是固定大小還是基於數組大小? – 2011-12-30 15:42:04
[C#數組,從現有數組獲取子數組]的可能重複(http://stackoverflow.com/questions/943635/c-sharp-arrays-getting-a-sub-array-from-an-existing -array) – John 2011-12-30 15:42:20
http://msdn.microsoft.com/en-us/library/z50k9bft.aspx – wiero 2011-12-30 15:42:29