public static T GetEntity<T>(DataTable table) where T : new() { T entity = new T(); foreach (DataRow row in table.Rows) { foreach (var item in entity.GetType().GetProperties()) { if (row.Table.Columns.Contains(item.Name)) { if (DBNull.Value != row[item.Name]) { item.SetValue(entity, Convert.ChangeType(row[item.Name], item.PropertyType), null); } } } } return entity; } public static IList<T> GetEntities<T>(DataTable table) where T : new() { IList<T> entities = new List<T>(); foreach (DataRow row in table.Rows) { T entity = new T(); foreach (var item in entity.GetType().GetProperties()) { item.SetValue(entity, Convert.ChangeType(row[item.Name], item.PropertyType), null); } entities.Add(entity); } return entities; }
/// <summary> /// 实体类转换成DataTable /// </summary> /// <param name="modelList">实体类列表</param> /// <returns></returns> public DataTable GetDataTable(List<T> modelList) { if (modelList == null || modelList.Count == 0) { return null; } DataTable dt = CreateData(modelList[0]); foreach(T model in modelList) { DataRow dataRow = dt.NewRow(); foreach (PropertyInfo propertyInfo in typeof(T).GetProperties()) { dataRow[propertyInfo.Name] = propertyInfo.GetValue(model, null); } dt.Rows.Add(dataRow); } return dt; } /// <summary> /// 根据实体类得到表结构 /// </summary> /// <param name="model">实体类</param> /// <returns></returns> private DataTable CreateDataTable(T model) { DataTable dataTable = new DataTable(typeof (T).Name); foreach (PropertyInfo propertyInfo in typeof(T).GetProperties()) { dataTable.Columns.Add(new DataColumn(propertyInfo.Name, propertyInfo.PropertyType)); } return dataTable; }