泛型类型转为DataTable类型

 

     public static DataTable ConvertToDatatable<T>(IEnumerable<T> data)

        {

            PropertyDescriptorCollection props = TypeDescriptor.GetProperties(typeof(T));

            DataTable table = new DataTable();



            for (int i = 0; i < props.Count; i++)

            {

                PropertyDescriptor prop = props[i];

                //table.Columns.Add(prop.Name, prop.PropertyType);//出错!DataSet 不支持 System.Nullable<>。

                //因为 DataColumn 不支持 Nullable<T> 类型,空值只能使用DBNull。

                table.Columns.Add(prop.Name);

            }



            object[] values = new object[props.Count];



            foreach (T item in data)

            {

                for (int i = 0; i < values.Length; i++)

                {

                    values[i] = props[i].GetValue(item);

                }

                table.Rows.Add(values);

            }

            return table;

        }

 

你可能感兴趣的:(Datatable)