datatable,list,实体类,dataset之类的互相转换
2019-04-13 10:06
85 查看
/// <summary> /// DataTable与实体类互相转换 /// </summary> /// <typeparam name="T">实体类</typeparam> public List<T> FillModel(DataSet ds) { if (ds == null || ds.Tables[0] == null || ds.Tables[0].Rows.Count == 0) { return null; } else { return FillModel(ds.Tables[0]); } } /// <summary> /// 填充对象列表:用DataSet的第index个表填充实体类 /// </summary> public List<T> FillModel(DataSet ds, int index) { if (ds == null || ds.Tables.Count <= index || ds.Tables[index].Rows.Count == 0) { return null; } else { return FillModel(ds.Tables[index]); } } /// <summary> /// 填充对象列表:用DataTable转换成实体类 /// </summary> public List<T> FillModel(DataTable dt) { if (dt == null || dt.Rows.Count == 0) { return null; } List<T> modelList = new List<T>(); foreach (DataRow dr in dt.Rows) { //T model = (T)Activator.CreateInstance(typeof(T)); T model = new T(); for (int i = 0; i < dr.Table.Columns.Count; i++) { PropertyInfo propertyInfo = model.GetType().GetProperty(dr.Table.Columns[i].ColumnName); if (propertyInfo != null && dr[i] != DBNull.Value) propertyInfo.SetValue(model, dr[i], null); } modelList.Add(model); } return modelList; } /// <summary> /// 填充对象:用DataRow填充实体类 /// </summary> public T FillModel(DataRow dr) { if (dr == null) { return default(T); } //T model = (T)Activator.CreateInstance(typeof(T)); T model = new T(); for (int i = 0; i < dr.Table.Columns.Count; i++) { PropertyInfo propertyInfo = model.GetType().GetProperty(dr.Table.Columns[i].ColumnName); if (propertyInfo != null && dr[i] != DBNull.Value) propertyInfo.SetValue(model, dr[i], null); } return model; } /// <summary> /// 实体类转换成DataSet /// </summary> /// <param name="modelList">实体类列表</param> /// <returns></returns> public DataSet FillDataSet(List<T> modelList) { if (modelList == null || modelList.Count == 0) { return null; } else { DataSet ds = new DataSet(); DataTable dt = new DataTable(); dt = FillDataTable(modelList); ds.Tables.Add(); return ds; } } /// <summary> /// List转换成DataTable /// </summary> /// <param name="modelList"></param> /// <returns></returns> public DataTable FillDataTable(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> public DataTable CreateData(T t) { 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; }
相关文章推荐
- DataSet、DataTable转换List(泛型集合与DataSet互相转换 )
- (ASP.NET)DataTable与Dataset的互相转换
- XML 与 DataSet/DataTable 互相转换实例(C#)——转载
- DataTable与实体类互相转换
- DataSet和List<T> 泛型之间互相转换 (转载, 作者写的很好)
- DataTable与实体类互相转换
- DataTable与实体类互相转换
- List 转换 DataTable DataSet的方法
- DataSet和List<T> 泛型之间互相转换
- XML 与 DataSet/DataTable 互相转换实例(C#)——转载
- DataSet和List<T> 泛型之间互相转换
- DataSet和List 泛型之间互相转换 (转载)
- 将 IList<T> 或 IList 转换为Dataset或DataTable
- DataTable与实体类互相转换
- DataSet和List 泛型之间互相转换 (转载, 作者写的很好)
- DataTable与实体类互相转换
- DataSet和List<T> 泛型之间互相转换 (转载, 作者写的很好)
- DataSet和List<T> 泛型之间互相转换
- c#大圣之路笔记——c# 我们需要在XML与实体类,DataTable,List之间进行转换,下面是XmlUtil类,该类来自网络并稍加修改。
- 将 IList 或 IList 转换为Dataset或DataTable