代码
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; }