我有一个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)
而无需投射?
答案 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()