VB.NET datatable转List
时间: 2023-08-07 17:08:02 浏览: 370
VB.NET的DataTable常用方法总结
3星 · 编辑精心推荐
在VB.NET中,你可以使用LINQ查询语言将DataTable转换为List。下面是一个示例代码:
```vb
Imports System.Data
Imports System.Linq
Module DataTableExtensions
<Extension()>
Public Function ToList(Of T)(dataTable As DataTable) As List(Of T)
Dim dataList As New List(Of T)()
If dataTable IsNot Nothing AndAlso dataTable.Rows.Count > 0 Then
For Each row As DataRow In dataTable.Rows
Dim obj As T = Activator.CreateInstance(Of T)()
For Each prop As Reflection.PropertyInfo In GetType(T).GetProperties()
If dataTable.Columns.Contains(prop.Name) AndAlso Not IsDBNull(row(prop.Name)) Then
prop.SetValue(obj, Convert.ChangeType(row(prop.Name), prop.PropertyType))
End If
Next
dataList.Add(obj)
Next
End If
Return dataList
End Function
End Module
```
在上述示例中,我们创建了一个扩展方法`ToList`,可以将DataTable转换为指定类型的List。该方法使用反射来动态创建对象,并将DataTable中的数据填充到对象的属性中。
使用示例:
```vb
Dim dataTable As New DataTable()
dataTable.Columns.Add("ID", GetType(Integer))
dataTable.Columns.Add("Name", GetType(String))
dataTable.Rows.Add(1, "John")
dataTable.Rows.Add(2, "Jane")
Dim dataList As List(Of Person) = dataTable.ToList(Of Person)()
Public Class Person
Public Property ID As Integer
Public Property Name As String
End Class
```
在上述示例中,我们首先创建了一个包含ID和Name列的DataTable,并添加了两行数据。然后,我们调用`ToList`方法将DataTable转换为`List(Of Person)`,其中`Person`是一个自定义的类,具有ID和Name属性。最后,我们可以使用`dataList`来访问转换后的List。
请注意,要正确地转换DataTable到List,确保DataTable的列名与目标类的属性名相匹配,且类型兼容。
阅读全文