简单的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; } } }
螃蟹在剥我的壳,笔记本在写我。
漫天的我落在枫叶雪花上。
而你在想我。