首页 > 代码库 > 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 转实体