นี่ไม่ใช่วิธีการแก้ปัญหาที่สะอาด / เร็วที่สุด / ง่ายที่สุด / สุดหรู แต่เป็นแรงเดรัจฉานที่ฉันสร้างขึ้นเพื่อให้งานสำเร็จในสถานการณ์ที่คล้ายกัน:
DataTable dt = (DataTable)Session["dtAllOrders"];
DataTable dtSpecificOrders = new DataTable();
// Create new DataColumns for dtSpecificOrders that are the same as in "dt"
DataColumn dcID = new DataColumn("ID", typeof(int));
DataColumn dcName = new DataColumn("Name", typeof(string));
dtSpecificOrders.Columns.Add(dtID);
dtSpecificOrders.Columns.Add(dcName);
DataRow[] orderRows = dt.Select("CustomerID = 2");
foreach (DataRow dr in orderRows)
{
DataRow myRow = dtSpecificOrders.NewRow(); // <-- create a brand-new row
myRow[dcID] = int.Parse(dr["ID"]);
myRow[dcName] = dr["Name"].ToString();
dtSpecificOrders.Rows.Add(myRow); // <-- this will add the new row
}
ชื่อใน DataColumns จะต้องตรงกับชื่อในตารางดั้งเดิมของคุณเพื่อให้สามารถใช้งานได้ ฉันเพิ่งใช้ "ID" และ "ชื่อ" เป็นตัวอย่าง