首页 > 代码库 > List<T>转DataTable
List<T>转DataTable
泛型List<T>在C#中的作用越来越大,如果把SQL语句的结果直接转化成List<T>,效率会非常明显,但是微软给我的提供的SQL结果集为DataSet,所以我们如果想用泛型作为数据集的话,就需要把DataSet转换成List<T>类型。
首先我们要把DataSet中的DataTable取出来,DataSet属于DataTable集合,通过索引或者TableName都可以把DataTable取出来,DataTable里有多个列就是数据库中表的字段,用来映射实体类中的属性变量,我们从DataTable中每行数据的属性赋值给实体类字段就可以了,微软有相关的方法,获取实体类的属性集合:
PropertyInfo[] properties=(new T).GetType().GetProperties();
再把DataTable里的数据赋值给此实体类对象:
properties.SetValue((new T), value, null);这样就给其中的一个属性赋值了,但是我们需要把每个属性都赋值,这时候需要通过遍历属性集合了
举一个整体例子:
1 public List<Base_Room> GetBaseRoomList(DataTable dt) 2 { 3 List<Base_Room> list = new List<Base_Room>(); 4 string tempName = string.Empty; 5 foreach (DataRow dr in dt.Rows) 6 { 7 Base_Room Room = new Base_Room(); 8 PropertyInfo[] properties = Room.GetType().GetProperties(); 9 foreach (PropertyInfo property in properties)10 {11 tempName = property.Name;//属性名称12 if (dt.Columns.Contains(tempName))13 {14 if (!property.CanWrite)15 {16 continue;17 }18 object value = http://www.mamicode.com/dr[tempName];//属性值19 if (value != DBNull.Value)20 {21 property.SetValue(Room, value, null);22 }23 }24 }25 list.Add(Room);26 }27 return list;28 }
我是以其中的某个实体类作为例子,因为每个DataTable的字段不是一样的,只能是每个实体类写一个相应的方法,代码不是很高明,网上各种例子也有,希望可以和大家一起学习
List<T>转DataTable
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。