C# 泛型DataTable转对象List

来源:互联网 发布:c语言中如何打开文件 编辑:程序博客网 时间:2024/05/22 12:47
  /// <summary>
        /// Table转List
        /// </summary>
        /// <param name="dt"></param>
        /// <returns></returns>
        public List<T> TableToList(DataTable dt)
        {
            var result = new List<T>();
            var type = typeof(T);
            foreach (DataRow row in dt.Rows)
            {
                PropertyInfo[] array = type.GetProperties(); //集合属性数组  
                var entity = Activator.CreateInstance<T>(); //新建对象实例  
                foreach (var p in array)
                {
                    if (!dt.Columns.Contains(p.Name) || row[p.Name] == null || row[p.Name] == DBNull.Value)
                    {
                        continue;
                    }
                    if (p.PropertyType == typeof(DateTime) && Convert.ToDateTime(row[p.Name]) < Convert.ToDateTime("1753-01-01"))
                    {
                        continue;
                    }
                    try
                    {
                        //类型强转,将table字段类型转为集合字段类型 
                        var obj = Convert.ChangeType(row[p.Name], p.PropertyType);
                        p.SetValue(entity, obj, null);
                    }
                    catch (Exception)
                    {
                        continue;
                    }
                }
                result.Add(entity);
            }
            return result;
        }
3 0
原创粉丝点击