วันศุกร์ที่ 2 พฤศจิกายน พ.ศ. 2555
การแปลงข้อมูลจาก DataTable เป็น List<>
public List<T> ConvertDataTableToEntity<T>(DataTable dt)
{
List<T> DataReturn = new List<T>();
for (int i = 0; i <= dt.Rows.Count - 1; i++)
{
T item = (T)Activator.CreateInstance(typeof(T));
for (int k = 0; k <= dt.Columns.Count - 1; k++)
{
PropertyInfo[] pf = item.GetType().GetProperties();
for (int y = 0; y <= pf.Length - 1; y++)
{
if (pf[y].Name.ToLower() == dt.Columns[k].ColumnName.ToLower())
{
pf[y].SetValue(item, Convert.ChangeType(dt.Rows[i][k], Type.GetType((dt.Columns[k].DataType.ToString()))), null);
}
}
}
DataReturn.Add((T)item);
}
return DataReturn;
}
วิธีเรียกใช้งาน
ตัวอย่าง
ต้องมี Class ที่มี Property ที่เหมือนกับ DataTable ก่อน ในตัวอย่างนี้สร้าง Class A ขึ้นมา
public class A
{
public string A1 { get; set; }
public int A2 { get; set; }
public string A3 { get; set; }
public string A4 { get; set; }
}
กำหนดค่าใน DataTable โดยจะต้องมีชื่อคอลั่มน์ที่กรงกับชื่อ Property ของ Class ที่เราจะแปลง
DataTable dt1 = new DataTable();
dt1.Columns.Add("A1", Type.GetType("System.String"));
dt1.Columns.Add("A2", Type.GetType("System.Int32"));
dt1.Columns.Add("A3", Type.GetType("System.String"));
dt1.Columns.Add("A4", Type.GetType("System.String"));
DataRow dr = dt1.NewRow();
dr["A1"] = "T1";
dr["A2"] = 20;
dr["A3"] = "T3";
dr["A4"] = "T4";
dt1.Rows.Add(dr);
สร้างตัวแปร List<A> เพื่อมารับข้อมูลที่มีการ Concevert
List<A> data = new List<A>();
data = this.ConvertDataTableToEntity<A>(dt1);
สมัครสมาชิก:
ส่งความคิดเห็น (Atom)
ไม่มีความคิดเห็น:
แสดงความคิดเห็น