1 class Program
2 {
3 static void Main(string[] args)
4 {
5 var list = new List<Demo> {
6 new Demo{ id=1,age=18, name="Tim"},
7 new Demo{ id=2,age=22, name="Allen"},
8 new Demo{ id=3,age=24, name="Jim"}
9 };
10 var dt = list.ToDataTable();
11
12 }
13 }
14 static class Extensions
15 {
16 internal static DataTable ToDataTable<T>(this IList<T> list)
17 {
18 Type elementType = typeof(T);
19
20 var t = new DataTable();
21
22 elementType.GetProperties().ToList().ForEach(propInfo => t.Columns.Add(propInfo.Name, Nullable.GetUnderlyingType(propInfo.PropertyType) ?? propInfo.PropertyType));
23 foreach (T item in list)
24 {
25 var row = t.NewRow();
26 elementType.GetProperties().ToList().ForEach(propInfo => row[propInfo.Name] = propInfo.GetValue(item, null) ?? DBNull.Value);
27 t.Rows.Add(row);
28 }
29 return t;
30 }
31 }
32 class Demo
33 {
34 public int id { get; set; }
35 public string name { get; set; }
36 public int age { get; set; }
37 }
// 此代码转于 http://bbs.csdn.net/topics/390385021?page=1 q107770540大神的回复