using System; using System.Collections; using System.Collections.Generic; using System.Text; using System.Data; using System.Runtime.Serialization.Formatters.Binary; using System.Reflection; namespace BatchService.Framework.Utility { public class EntityConverter { /// /// DataSet转换为实体类 /// /// 实体类 /// DataSet /// 待转换数据表索引 /// 实体类 public static T DataSetToEntity(DataSet p_DataSet, int p_TableIndex) { if (p_DataSet == null || p_DataSet.Tables.Count < 0) return default(T); if (p_TableIndex > p_DataSet.Tables.Count - 1) return default(T); if (p_TableIndex < 0) p_TableIndex = 0; if (p_DataSet.Tables[p_TableIndex].Rows.Count <= 0) return default(T); DataRow p_Data = p_DataSet.Tables[p_TableIndex].Rows[0]; // 返回值初始化 T _t = (T)Activator.CreateInstance(typeof(T)); PropertyInfo[] propertys = _t.GetType().GetProperties(); foreach (PropertyInfo pi in propertys) { try { if (p_DataSet.Tables[p_TableIndex].Columns.IndexOf(pi.Name.ToUpper()) != -1 && p_Data[pi.Name.ToUpper()] != DBNull.Value) { pi.SetValue(_t, p_Data[pi.Name.ToUpper()], null); } else { pi.SetValue(_t, null, null); } } catch (Exception ex) { LogHelper.Error(pi.Name + "," + p_Data[pi.Name.ToUpper()] + "," + ex.ToString()); } } return _t; } /// /// DataSet转换为实体列表 /// /// 实体类 /// DataSet /// 待转换数据表索引 /// 实体类列表 public static IList DataSetToEntityList(DataSet p_DataSet, int p_TableIndex) { if (p_DataSet == null || p_DataSet.Tables.Count < 0) return default(IList); if (p_TableIndex > p_DataSet.Tables.Count - 1) return default(IList); if (p_TableIndex < 0) p_TableIndex = 0; if (p_DataSet.Tables[p_TableIndex].Rows.Count <= 0) return default(IList); DataTable p_Data = p_DataSet.Tables[p_TableIndex]; // 返回值初始化 IList result = new List(); for (int j = 0; j < p_Data.Rows.Count; j++) { T _t = (T)Activator.CreateInstance(typeof(T)); PropertyInfo[] propertys = _t.GetType().GetProperties(); foreach (PropertyInfo pi in propertys) { if (p_Data.Columns.IndexOf(pi.Name.ToUpper()) != -1 && p_Data.Rows[j][pi.Name.ToUpper()] != DBNull.Value) { pi.SetValue(_t, p_Data.Rows[j][pi.Name.ToUpper()], null); } else { pi.SetValue(_t, null, null); } } result.Add(_t); } return result; } //dataset转实体类 public static IList FillModel(DataSet ds) { List l = new List(); T model = default(T); if (ds.Tables[0].Columns[0].ColumnName == "rowId") { ds.Tables[0].Columns.Remove("rowId"); } foreach (DataRow dr in ds.Tables[0].Rows) { model = Activator.CreateInstance(); foreach (DataColumn dc in dr.Table.Columns) { PropertyInfo pi = model.GetType().GetProperty(dc.ColumnName); if (dr[dc.ColumnName] != DBNull.Value) pi.SetValue(model, dr[dc.ColumnName], null); else pi.SetValue(model, null, null); } l.Add(model); } return l; } } }