以正确的类型获取DataTable列中的所有值的列表

时间:2018-02-15 10:21:52

标签: .net vb.net datatable ado.net

我有一个DataTable,我使用SqlDataAdapter这样填充:

Dim dt = New DataTable("Students")
Dim cmd = New SqlCommand("SELECT [Id] ,[Name] FROM [Students]", myADO_SqlConnection)
Dim da = New SqlDataAdapter With {.SelectCommand = cmd}
da.Fill(dt)

在我的数据库中,Id的类型为Int

我想获取Id列中的值列表。为此,我写道:

Dim Ids = dt.AsEnumerable.Select(Function(r) r.Item("Id")).ToList

问题是,这给了我一个List(Of Object)。有没有一种方法可以直接获得List(Of Integer)而无需投射?

1 个答案:

答案 0 :(得分:3)

您可以使用DataRow扩展方法Field

Dim Ids = dt.AsEnumerable.Select(Function(r) r.Field(Of Int32)("Id")).ToList()

此方法还支持可空类型,因此如果列可以为null,则可以编写:

Dim nullableColumnList As List(Of Int32?) = dt.AsEnumerable().
    Select(Function(r) r.Field(Of Int32?)("NullableColumnName")).
    ToList()