我正在尝试解决有关列表类型的问题。首先,我的数据库中有一个存储过程,它选择单个列,我尝试在我的 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 上运行。