VB.NET DataTable - 在不使用循环的情况下获取列的第一个“n”项

时间:2013-11-19 14:23:41

标签: vb.net datatable

我有一个DataTable dt,需要将某个列的第一个n项存储在整数数组中。我知道用这样的循环很容易做到这一点:

Dim array(n-1) As Integer
For i As Integer = 0 To n-1
    array(i) = dt.Rows(i).Item("columName")
Next

尽管如此,是否有更方便的方法将这些项目存储在数组中?

1 个答案:

答案 0 :(得分:3)

“不使用循环”是不可能的,因为没有神奇的方法来从集合中检索项目而不循环它。但是,也许您认为LINQ不使用循环:

Dim columNameValues = From row In dt
                      Select row.Field(Of Int32)("columName")
Dim array As Int32() = columNameValues.ToArray() 

获取所有行的所有值,如果您希望n值使用Enumerable.Take

Dim array As Int32() = columNameValues.Take(n).ToArray() 

在VB.NET中,您甚至可以在LINQ查询中使用Take

Dim first10Values = From row In dt
                    Select row.Field(Of Int32)("columName")
                    Take 10

正如Barry所提到的那样, 技术上可以在不使用循环的情况下从集合中获取n项,但请看看自己:

Dim value1 As Int32 = dt.Rows(0).Field(Of Int32)("columName")
Dim value2 As Int32 = dt.Rows(1).Field(Of Int32)("columName")
Dim value3 As Int32 = dt.Rows(2).Field(Of Int32)("columName")
' ..... '
Dim value10 As Int32 = dt.Rows(9).Field(Of Int32)("columName")

您可以将它们添加到List(Of Int32),但这只是为了演示目的。