//直接继承自List<T>,操作简单 public class MyList<T> : List<T> { private DataTable _dataTable; PropertyDescriptorCollection propDescs; //转换函数 public DataTable ConvertToDataTable() { GenerateTableSchema(); DataRow row; foreach (T t in this) { row = _dataTable.NewRow(); foreach (PropertyDescriptor pd in propDescs) { //表格列的值就是属性的值 row[pd.Name] = pd.GetValue(t); } _dataTable.Rows.Add(row); } _dataTable.AcceptChanges(); return _dataTable; } //生成表结构 private void GenerateTableSchema() { _dataTable = new DataTable(); DataColumn col; propDescs = TypeDescriptor.GetProperties(typeof(T)); foreach (PropertyDescriptor pd in propDescs) { _dataTable.Columns.Add(pd.Name, pd.PropertyType); } } } //实体类 public class Personal { private string _name; private int _age; public Personal(string name, int age) { _name = name; _age = age; } public string Name { get { return _name; } set { _name = value; } } public int Age { get { return _age; } set { _age = value; } } } 调用方法 private void button1_Click(object sender, EventArgs e) { MyList<Personal> myList = new MyList<Personal>(); Personal p; p = new Personal("aa", 20); myList.Add(p); p = new Personal("bb", 30); myList.Add(p); //OK了的DataTable DataTable dt = myList.ConvertToDataTable(); }