我正在尝试解决有关列表类型的问题。首先,我的数据库中有一个存储过程,它选择单个列,我尝试在我的 VB 应用程序中继续它。通过创建一个方法函数,我声明了一个通过 SqlCommand 加载的 DataTable(具有 CloseConnection 行为)。之后,我公开声明了一个 List(Of String) ,它需要使用正在进行的存储过程中的行/项目来填充。下面是我的代码片段:
Dim dt As New DataTable()
Try
If conn.State = ConnectionState.Open Then
conn.Close()
Else
conn.Open()
Dim cmd = New SqlCommand("LoadCodes", conn)
cmd.CommandType = CommandType.StoredProcedure
dt.Load(cmd.ExecuteReader(CommandBehavior.CloseConnection))
Dim collection As New List(Of DataRow)
collection = dt.AsEnumerable.ToList
LPrefix = collection.Cast(Of String)()
End If
Catch ex As Exception
MsgBox(ex.Message + vbCritical)
End Try
这是LPrefix = collection.Cast(Of String)()
我收到异常错误的地方,告诉我我无法真正转换它。旧的时尚方式是使用 for/for 每个循环进行迭代,但这不是我想要最好地利用性能的方式,特别是如果列表将包含来自单个列的数千行。所以基本上我想在不使用 For/For Each 循环的情况下将该 DataTable 中的这些项目插入到 List(Of String) 中。
在 Visual Studio 2010 Ultimate、.NET Framework 4.0 上运行。