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

本文关键字:中间 获取 元素 数组 | 更新日期: 2023-09-27 18:19:02

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#中从数组的中间获取元素

最简单的方法是使用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()

应该产生你需要的东西。

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

使用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);