下麵這個學習,把List<T>轉換為Datatable。 下麵先創建一個對象T: class Ay { private int _ID; public int ID { get { return _ID; } set { _ID = value; } } private string _Accoun ...
下麵這個學習,把List<T>轉換為Datatable。
class Ay { private int _ID; public int ID { get { return _ID; } set { _ID = value; } } private string _Account; public string Account { get { return _Account; } set { _Account = value; } } private string _Email; public string Email { get { return _Email; } set { _Email = value; } } public Ay() { } public Ay(int id,string account,string email) { this._ID = id; this._Account = account; this._Email = email; } }Source Code
public static DataTable ToDataTable<T>(this List<T> items) { DataTable dataTable = new DataTable(); PropertyInfo[] Props = typeof(T).GetProperties(BindingFlags.Public | BindingFlags.Instance); foreach (PropertyInfo prop in Props) { dataTable.Columns.Add(prop.Name); } foreach (T obj in items) { var values = new object[Props.Length]; for (int i = 0; i < Props.Length; i++) { values[i] = Props[i].GetValue(obj, null); } dataTable.Rows.Add(values); } return dataTable; }Source Code
下麵,我們在List<T>添加幾筆記錄,然後使用上面的擴展方法,把List<T> 轉換為DataTable.
為了看到結果,再把DataTable列印至控制臺上:
class Az { public void ConvertListToDataTableTextDemo() { List<Ay> ays = new List<Ay>() { new Ay() { ID=1,Account="A0001",Email="[email protected]" }, new Ay() { ID=2,Account="A0002",Email="[email protected]"}, new Ay() {ID=3,Account="A0003",Email="[email protected]" } }; DataTable dt = ays.ToDataTable(); foreach (DataRow row in dt.Rows) { Console.WriteLine(); for (int x = 0; x < dt.Columns.Count; x++) { Console.Write(row[x].ToString() + " "); } } Console.WriteLine("\n\r"); } }Source Code