'/*************************************************************** '类 名 称:ChangetoList '说 明:将DataTable转换成泛型集合 '命名空间:DAL '创建时间:2015年4月24日17:25:38 '作 者:郑浩 '小 组: '修改时间: '修 改 人: '版 本 号:V1.0 '****************************************************************/ Imports System.Reflection Imports System.Collections.Generic Public Class ChangetoList ''' <summary> ''' 将DataTable转换成泛型集合 ''' </summary> ''' <typeparam name="T">任意类型</typeparam> ''' <param name="dt">DataTable</param> ''' <param name="ts">集合</param> ''' <returns>集合</returns> ''' <remarks></remarks> Public Shared Function ConverToList(Of T As New)(dt As DataTable,ts As List(Of T)) '获得T的类型 Dim type As Type = GetType(T) '定义一个临时变量 Dim strTemp As String = String.Empty '遍历所有行数 For Each dr As DaTarow In dt.Rows '定义类型变量act获取动态创建对象T的类型 Dim act As T = If((nothing Is nothing),Activator.CreateInstance(Of T),nothing) '引用反射表示可获得对象的所有属性组成的集合 Dim propertys As PropertyInfo() = act.GetType.GetProperties() '定义array变量,接收propertys中含有的属性,并提供对属性propertys元数据访问 Dim array As PropertyInfo() = propertys Dim intCount As Integer = 0 '遍历所有对象属性 While intCount < array.Length 'length表示所有维数中元素的综合 'pr表示元素中含有的属性,并提供对数据访问 Dim pr As PropertyInfo = array(intCount) strTemp = pr.Name '列名=对象的属性名 If dt.Columns.Contains(strTemp) Then '判断此属性是否设置函数 If pr.CanWrite Then '该属性是否可写 Dim value As Object = dr(strTemp) '如果非空,则赋值给对象的属性 If value IsNot dbnull.Value Then '设置对象的属性值 pr.SetValue(act,value,nothing) End If End If End If intCount += 1 Continue While End While '添加对象到泛型集合中 ts.Add(act) Next Return ts End Function End Class
''' <summary> ''' 查询卡表数据 ''' </summary> ''' <param name="enCard"></param> Public Function QueryData(ByVal enCard As cardEntity) As List(Of Entity.cardEntity) Implements ICardDAL.QueryData '实例化一个sqlHelper类 Dim helper As New sqlHelper '定义sql语句 Dim sql As String = "Select * from T_CardInfo" '定义DataTable Dim dt As New DataTable '定义泛型集合 Dim cardList As New List(Of Entity.cardEntity) dt = helper.ExeSelect(sql,CommandType.Text) '如果DataTable中行数大于0,说明有返回的数据,然后将DataTable转换成泛型集合 If dt.Rows.Count > 0 Then cardList = CType(ChangetoList.ConverToList(dt,cardList),Global.System.Collections.Generic.List(Of Global.Entity.cardEntity)) End If Return cardList End Function
原文地址:https://www.jb51.cc/vb/257438.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。