/// <summary> /// 将 datatable 转换为 list /// </summary> /// <typeparam name="T"></typeparam> /// <param name="table"></param> /// <returns></returns> public static List <T> ToList <T>(this DataTable table) where T : class, new() { var list = new List <T>(); var _Entity = ReflexHelper.CreateInstance <T>(); var propertyInfo = _Entity.GetType().GetProperties(System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Public); foreach (DataRow dr in table.Rows) { _Entity = ReflexHelper.CreateInstance <T>(); foreach (var item in propertyInfo) { string AttrName = item.Name; foreach (DataColumn dc in dr.Table.Columns) { if (AttrName != dc.ColumnName) { continue; } if (dr[dc.ColumnName] != DBNull.Value) { item.SetValue(_Entity, dr[dc.ColumnName], null); } else { item.SetValue(_Entity, null, null); } } } list.Add(_Entity); } return(list); }
/// <summary> /// DataRow 转换 实体 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="dr"></param> /// <returns></returns> public static T ToEntity <T>(this DataRow dr) where T : class, new() { var _Entity = ReflexHelper.CreateInstance <T>(); var list = _Entity.GetType().GetProperties(System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Public); if (list.Length == 0) { throw new Exception("找不到任何 公共属性!"); } foreach (var item in list) { string AttrName = item.Name; foreach (DataColumn dc in dr.Table.Columns) { if (AttrName != dc.ColumnName) { continue; } if (dr[dc.ColumnName] != DBNull.Value) { item.SetValue(_Entity, dr[dc.ColumnName], null); } } } return(_Entity); }