从c#中的数组中间获取元素

时间:2011-12-30 15:40:24

标签: c# arrays

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"};

你知道任何方法或任何方法吗?

4 个答案:

答案 0 :(得分: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版本,除非您有真正的理由使用其他替代方案。

答案 1 :(得分:4)

LINQ有一些很好的方法。在你的情况下

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

应该产生你需要的东西。

参考文献在这里:http://msdn.microsoft.com/en-us/library/bb386988.aspx

答案 2 :(得分:2)

使用LINQ for this

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

答案 3 :(得分: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);