2011-12-13 24 views
0

我有一个字符串数组得到一个范围,我需要得到一系列出来的是,说10个项目从指数计算20如何从一个数组

我看到有一个叫Take的扩展方法可以从数组的开始处获取多个项目,但我也需要指定起始索引。

回答

4

首先使用Skip方法。像Take,这是一个LINQ的扩展方法,并返回一个IEnumerable:

Dim myRange = myArray.Skip(20).Take(10) 

如果数组包含20元以下,该方法不抛出异常,但返回一个空IEnumerable的。

1

可以使用Skip方法跳过一些项目:

theArray.Skip(20).Take(10) 
0

与选项严格在

Dim foo As IEnumerable(Of String) = myArray.Skip(20).Take(10) 

    Dim arrayPart() As String = myArray.Skip(20).Take(10).ToArray 
0

相同的例子,我想知道为什么在BCL以前到LINQ已经可能性“使用Array.Copy失踪
例如:

Dim copy(9) As String ' or Dim copy(0 To 9) As String ' hence 10 items 
Array.Copy (source, 20, copy, 0, copy.Length) 

或者,如果你想拥有初始阵列中变化反映在复制(或你确定它不会被修改),可以使用一个ArraySegment是basicaly初始阵列中作为这样的“查看”真的不涉及复制:

Dim view As New ArraySegment(Of String)(source, 20, 10)