C# ListToDataTable

        public static DataTable ListToDataTable<T>(List<T> list)
        {
            DataTable dt = new DataTable();

            // 获取实体类型
            Type type = typeof(T);

            // 添加列
            PropertyInfo[] properties = type.GetProperties();
            foreach (PropertyInfo property in properties)
            {
                dt.Columns.Add(property.Name, property.PropertyType.IsGenericType
                    ? typeof(string)
                    : property.PropertyType);
            }

            if (list == null || list.Count == 0)
            {
                return dt;
            }

            // 添加行数据
            foreach (T item in list)
            {
                DataRow row = dt.NewRow();
                foreach (PropertyInfo property in properties)
                {
                    object objValue = property.GetValue(item);
                    if (objValue == null)
                    {
                        row[property.Name] = DBNull.Value;
                    }
                    else
                    {
                        row[property.Name] = property.PropertyType.IsGenericType//类型是否是泛型类型
                            ? JsonConvert.SerializeObject(objValue)
                            : objValue;
                    }
                }
                dt.Rows.Add(row);
            }
            return dt;
        }

 调用:

List<Student> students = new List<Student>();
students.Add(new Student() { Id = 1, Name = "张三", StuClass = new List<StuClass>() { new StuClass(1, "语文", "") } });
students.Add(new Student() { Id = 2, Name = "张佳", StuClass = new List<StuClass>() { new StuClass(1, "数学", "") } });
var dt = Helper.ListToDataTable(students);

结果:

 

posted @ 2024-10-12 15:54  Hi.wz  阅读(89)  评论(0)    收藏  举报