简单的Datable转List方法
Posted skytitan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了简单的Datable转List方法相关的知识,希望对你有一定的参考价值。
public static class DataTableUtils<T> where T : new() { public static List<T> ConvertToModel(DataTable dt) { try { if (dt == null || dt.Rows.Count == 0) { throw new Exception("DataTable is Null!"); } List<T> ts = new List<T>(); Type type = typeof(T); string tempName = string.Empty; foreach (DataRow dr in dt.Rows) { T t = new T(); // 获得此模型的公共属性 PropertyInfo[] propertys = t.GetType().GetProperties(); foreach (PropertyInfo pi in propertys) { tempName = pi.Name; if (dt.Columns.Contains(tempName)) { if (!pi.CanWrite) continue; object value = dr[tempName]; if (value is DBNull) continue; if (pi.PropertyType.Name.ToLower() == "string") { if (value.GetType().Name.ToLower() == "guid") { pi.SetValue(t, value.ToString(), null); } else if (value.GetType().Name.ToLower() == "datetime") { pi.SetValue(t, Convert.ToDateTime(value).ToString("yyyy-MM-dd HH:mm:ss"), null); } else { pi.SetValue(t, Convert.ToString(value), null); } } else if (pi.PropertyType.Name.ToLower() == "lookupmodel") { if (dt.Columns.Contains(string.Concat(tempName, "Name"))) { object valuename = dr[string.Concat(tempName, "Name")]; if (valuename != DBNull.Value) { LookUpModel lum = new LookUpModel(); lum.id = Convert.ToString(value); lum.name = Convert.ToString(valuename); pi.SetValue(t, lum, null); } else { throw new Exception(string.Format("The value of column ‘{0}‘ is null!", string.Concat(tempName, "Name"))); } } else { throw new Exception(string.Format("The column ‘{0}‘ dose not exist!", string.Concat(tempName, "Name"))); } } else if (pi.PropertyType.Name.ToLower() == "int32" || pi.PropertyType.Name.ToLower() == "nullable`1") { pi.SetValue(t, Convert.ToInt32(value), null); } else if (pi.PropertyType.Name.ToLower() == "decimal") { pi.SetValue(t, Convert.ToDecimal(value), null); } else if (pi.PropertyType.Name.ToLower() == "datetime") { pi.SetValue(t, Convert.ToDateTime(value), null); } else if (pi.PropertyType.Name.ToLower() == "boolean") { pi.SetValue(t, Convert.ToBoolean(value), null); } } } ts.Add(t); } return ts; } catch (Exception) { throw; } } }
以上是关于简单的Datable转List方法的主要内容,如果未能解决你的问题,请参考以下文章
Datable中啥方法与List(T).FindAll 方法 (System.Collections.Generic) 类似
C#中 list<object> 去除重复的数据 求最简单的方法!!
c#常用的Datable转换为json,以及json转换为DataTable操作方法