转换成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) |