8

このトピックに関する多くの投稿を読みました。その中で、最近では.NET - Convert Generic Collection to Data Table . 残念ながら、すべて役に立ちませんでした。

私は構造の一般的なコレクションを持っています:

Private Structure MyStruct
Dim sState as String
Dim lValue as Long
Dim iLayer as Integer
End Structure

Dim LOStates As New List(Of MyStruct)

この構造体のリストを DataTable に入力する必要がありますが、これを行う方法がわかりません。Visual Studio 2008 で vb.net を使用しています。

どんな洞察も大歓迎です

4

3 に答える 3

19

リンクしたコードは、メンバーがプロパティとして宣言されていることを前提としています。プロパティを宣言していません。あなたはそれをReflectionで動作させることができます:

Imports System.Reflection
...

      Public Shared Function ConvertToDataTable(Of T)(ByVal list As IList(Of T)) As DataTable
        Dim table As New DataTable()
        Dim fields() As FieldInfo = GetType(T).GetFields()
        For Each field As FieldInfo In fields
          table.Columns.Add(field.Name, field.FieldType)
        Next
        For Each item As T In list
          Dim row As DataRow = table.NewRow()
          For Each field As FieldInfo In fields
            row(field.Name) = field.GetValue(item)
          Next
          table.Rows.Add(row)
        Next
        Return table
      End Function
于 2009-11-27T00:52:06.240 に答える