首页 > 代码库 > table 转实体
table 转实体
public class Table2Entity<T> where T : class,new() { public static List<T> GetEntitys(DataTable dt) { Dictionary<string, string> columns = new Dictionary<string, string>(); foreach (DataColumn item in dt.Columns) { columns.Add(item.ColumnName.Trim().ToLower(), item.ColumnName); } List<T> result = new List<T>(); var proptetis = typeof(T).GetProperties(BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Public | BindingFlags.DeclaredOnly); foreach (DataRow dr in dt.Rows) { T obj = new T(); foreach (var item in proptetis) { var attributes = item.GetCustomAttributes(typeof(RenameAttribute), true); var columnName = (attributes != null && attributes.Length > 0) ? ((RenameAttribute)(attributes[0])).Name.Trim().ToLower() : item.Name.Trim().ToLower(); if (columns.Keys.Contains(columnName)) { var mt = item.GetSetMethod(true); var value =http://www.mamicode.com/ dr[columns[columnName]]; if (value =http://www.mamicode.com/= null || value =http://www.mamicode.com/= DBNull.Value || string.IsNullOrWhiteSpace(value.ToString())) continue; if (item.PropertyType == typeof(string)) mt.Invoke(obj, new object[] { value.ToString() }); else if (item.PropertyType == typeof(int) || item.PropertyType == typeof(int?)) mt.Invoke(obj, new object[] { Convert.ToInt32(value) }); else if (item.PropertyType == typeof(long) || item.PropertyType == typeof(long?)) mt.Invoke(obj, new object[] { Convert.ToInt64(value) }); else if (item.PropertyType == typeof(double) || item.PropertyType == typeof(double?)) mt.Invoke(obj, new object[] { Convert.ToDouble(value) }); else if (item.PropertyType == typeof(decimal) || item.PropertyType == typeof(decimal?)) mt.Invoke(obj, new object[] { Convert.ToDecimal(value) }); else if (item.PropertyType == typeof(DateTime) || item.PropertyType == typeof(DateTime?)) mt.Invoke(obj, new object[] { Convert.ToDateTime(value) }); else if (item.PropertyType == typeof(float) || item.PropertyType == typeof(float?)) mt.Invoke(obj, new object[] { float.Parse(value.ToString()) }); else if (item.PropertyType == typeof(bool)) mt.Invoke(obj, new object[] { bool.Parse(value.ToString()) }); else if (item.PropertyType.BaseType == typeof(System.Enum)) { mt.Invoke(obj, new object[] { Convert.ToInt32(value) }); } } } result.Add(obj); } return result; } }
table 转实体
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。