リストの種類に関する問題を解決しようとしています。まず、DBにストアドプロシージャがあり、単一の列を選択して、VBのアプリで続行しようとしています。メソッド関数を作成することにより、(CloseConnection動作を使用して)SqlCommandを介してロードするDataTableを宣言しました。その後、途中のストアドプロシージャからの行/アイテムを入力する必要がある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 eachループで反復することですが、特にリストに1つの列から数千行が含まれる場合は、パフォーマンスを最大限に活用するためにこれを望んでいません。したがって、基本的には、For / For Eachループを使用せずに、それらの項目をそのDataTableからList(Of String)に挿入します。
Visual Studio 2010 Ultimate、.NETFramework4.0で実行されます。