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"};
你知道任何方法或任何方法吗?
答案 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);