كيفية تعبئة DataTable ومع قائمة (ر) أو تحويل قائمة (ر) إلى DataTable؟
-
05-07-2019 - |
سؤال
ولقد قرأت الكثير من المشاركات في هذا الموضوع؛ فيما بينها، وكان آخرها . NET - تحويل عام مجموعة إلى جدول بيانات . للأسف، ولكن دون جدوى.
ولدي مجموعة عامة من الهياكل:
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 ومع هذه القائمة من الهياكل لكن ليس لديهم فكرة عن كيفية التوجه نحو ذلك. أنا باستخدام vb.net في Visual Studio 2008.
وسوف يتم أي رؤى تقدير كبير
المحلول
وهذا الرمز الذي ترتبط يفترض وأعلن أعضاء من الخصائص. أنت لم تعلن خصائص. يمكنك ان تجعل من العمل مع التأمل:
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
نصائح أخرى
ولدي نفس العدد منSamSelikoff، وانتقل الى GetProperties:
Public Shared Function ConvertToDataTable(Of t)(
ByVal list As IList(Of t)
) As DataTable
Dim table As New DataTable()
If Not list.Any Then
'don't know schema ....
Return table
End If
Dim fields() = list.First.GetType.GetProperties
For Each field In fields
table.Columns.Add(field.Name, field.PropertyType)
Next
For Each item In list
Dim row As DataRow = table.NewRow()
For Each field In fields
dim p = item.GetType.GetProperty(field.Name)
row(field.Name) = p.GetValue(item, Nothing)
Next
table.Rows.Add(row)
Next
Return table
End Function
لا تنتمي إلى StackOverflow