2011-12-30 59 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);