首页 > 代码库 > C# DataTable转换成实体列表 与 实体列表转换成DataTable
C# DataTable转换成实体列表 与 实体列表转换成DataTable
/// <summary> /// DataTable转换成实体列表 /// </summary> /// <typeparam name="T">实体 T </typeparam> /// <param name="table">datatable</param> /// <returns></returns> public static IList<T> DataTableToList<T>(DataTable table) where T : class { if (!IsHaveRows(table)) return new List<T>(); IList<T> list = new List<T>(); T model = default(T); foreach (DataRow dr in table.Rows) { model = Activator.CreateInstance<T>(); foreach (DataColumn dc in dr.Table.Columns) { object drValue =http://www.mamicode.com/ dr[dc.ColumnName]; PropertyInfo pi = model.GetType().GetProperty(dc.ColumnName); if (pi != null && pi.CanWrite && (drValue != null && !Convert.IsDBNull(drValue))) { pi.SetValue(model, drValue, null); } } list.Add(model); } return list; } /// <summary> /// 实体列表转换成DataTable /// </summary> /// <typeparam name="T">实体</typeparam> /// <param name="list"> 实体列表</param> /// <returns></returns> public static DataTable ListToDataTable<T>(IList<T> list) where T : class { if (list == null || list.Count <= 0) { return null; } DataTable dt = new DataTable(typeof(T).Name); DataColumn column; DataRow row; PropertyInfo[] myPropertyInfo = typeof(T).GetProperties(BindingFlags.Public | BindingFlags.Instance); int length = myPropertyInfo.Length; bool createColumn = true; foreach (T t in list) { if (t == null) { continue; } row = dt.NewRow(); for (int i = 0; i < length; i++) { PropertyInfo pi = myPropertyInfo[i]; string name = pi.Name; if (createColumn) { column = new DataColumn(name, pi.PropertyType); dt.Columns.Add(column); } row[name] = pi.GetValue(t, null); } if (createColumn) { createColumn = false; } dt.Rows.Add(row); } return dt; }
C# DataTable转换成实体列表 与 实体列表转换成DataTable
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。