/// <summary> /// 将阅读器数据转换为实体列表 /// </summary> /// <param name="dt"></param> /// <returns></returns> public List <TEntity> DataTableToEntityList(SqlDataReader sdr) { //将阅读器数据转换成DataTable var list = AttributeHelper.GetEntityColumnAtrributes <TEntity>(); DataTable dtTwo = new DataTable(tableName); foreach (var model in list) { DataColumn dc = new DataColumn(); dc.ColumnName = model.propName; dc.DataType = Type.GetType(model.typeName); dtTwo.Columns.Add(dc); } while (sdr.Read()) { DataRow drTwo = dtTwo.NewRow(); foreach (var model in list) { try { if (sdr[model.fieldName] != null) { drTwo[model.propName] = sdr[model.fieldName]; } }catch { } } dtTwo.Rows.Add(drTwo); } return(ConvertEntityByEmit.GetList <TEntity>(dtTwo)); }
/// <summary> /// 将数据表转换为实体列表 /// </summary> /// <param name="dt"></param> /// <returns></returns> public List <TEntity> DataTableToEntityList(DataTable dt) { if (dt == null) { return(new List <TEntity>()); } var list = AttributeHelper.GetEntityColumnAtrributes <TEntity>(); DataTable dtTwo = new DataTable(tableName); foreach (var model in list) { if (dt.Columns.Contains(model.fieldName)) { DataColumn dc = new DataColumn(); dc.ColumnName = model.propName; dc.DataType = dt.Columns[model.fieldName].DataType; dtTwo.Columns.Add(dc); } } foreach (DataRow dr in dt.Rows) { DataRow drTwo = dtTwo.NewRow(); foreach (var model in list) { if (dt.Columns.Contains(model.fieldName)) { drTwo[model.propName] = dr[model.fieldName]; } } dtTwo.Rows.Add(drTwo); } return(ConvertEntityByEmit.GetList <TEntity>(dtTwo)); //List<TEntity> entityList = new List<TEntity>(); //foreach (DataRow dr in dt.Rows) //{ // //实体 // TEntity entity = new TEntity(); // //循环属性 // foreach (PropertyInfo prop in entity.GetType().GetProperties()) // { // //判断数据表中是否存在该列 // if (dt.Columns.Contains(prop.Name)) // { // if (!string.IsNullOrEmpty(dr[prop.Name].ToStr())) // { // //Convert.ChangeType将对象转换为指定类型 // prop.SetValue(entity, Convert.ChangeType(dr[prop.Name], prop.PropertyType), null); // } // } // } // entityList.Add(entity); //} //return entityList; }