在我们工作中有时候需要类型转换的,在此提供一个list转datatable的方法:
public static DataTable ListToDataTable<T>(List<T> list)
{
Type tp = typeof(T);
PropertyInfo[] proInfos = tp.GetProperties();
DataTable dt = new DataTable();
foreach (var item in proInfos)
{
//解决DataSet不支持System.Nullable<>问题
Type colType = item.PropertyType;
if ((colType.IsGenericType) && (colType.GetGenericTypeDefinition() == typeof(Nullable<>)))
{
colType = colType.GetGenericArguments()[0];
}
//添加列明及对应类型
dt.Columns.Add(item.Name, colType);
}
foreach (var item in list)
{
DataRow dr = dt.NewRow();
foreach (var proInfo in proInfos)
{
object obj = proInfo.GetValue(item);
if (obj == null)
{
continue;
}
if (proInfo.PropertyType == typeof(DateTime) && Convert.ToDateTime(obj) < Convert.ToDateTime("1753-01-01"))
{
continue;
}
dr[proInfo.Name] = obj;
}
dt.Rows.Add(dr);
}
return dt;
}
码出人生,永无止境!
原文:https://www.cnblogs.com/lanyu001/p/11757549.html