转换成DataSet的通用的方法如下:
Private Function ConvertToDS(ByVal lst As IList, ByVal typ As System.Type) As DataSet Dim obj As Object Dim ds As New DataSet
Dim tbl As DataTable = ds.Tables.Add(typ.Name)
' Get the public properties. Dim myPropertyInfo As System.Reflection.PropertyInfo() = typ.GetProperties((System.Reflection.BindingFlags.Public Or System.Reflection.BindingFlags.Instance))
Dim pi As System.Reflection.PropertyInfo For Each pi In myPropertyInfo tbl.Columns.Add(pi.Name, System.Type.GetType(pi.PropertyType.ToString())) Next
For Each obj In lst Dim dr As DataRow = tbl.NewRow
For Each pi In myPropertyInfo dr(pi.Name) = pi.GetValue(obj, Nothing) Next tbl.Rows.Add(dr)
Next Return ds End Function |
使用上面的方法来生成DataSet的方法如下:
Dim Cust As New CustomerBR Dim customerLst As IList customerLst = Cust.GetCustomers("from Customers")
Dim myType As System.Type = GetType(Customers) DataGrid1.DataSource = ConvertToDS(customerLst, myType).Tables(0) |