1. 程式人生 > >20180519001 - DataTable Group by功能參考

20180519001 - DataTable Group by功能參考

ray temp 異常 金額 foreach item 功能 clone .text

DataSet6 = DataSet1.Copy();

DataRow[] dr = DataSet6.Tables[0].Select(" 完工狀態 = ‘完工異常‘ ");

DataTable dt1 = DataSet6.Tables[0].Clone();

for (int i = 0; i < dr.Length; i++)
{
dt1.ImportRow((DataRow)dr[i]);

//this.Text = i.ToString();
}

// Group by

DataTable dtResult = dt1.Clone();
DataTable dtName = dt1.DefaultView.ToTable(true, "委外發票號", "委外訂單號", "存貨編碼", "工藝名稱", "訂單數量", "出庫數量", "未交數量", "CT不良數", "原幣含稅單價",
"原幣價稅合計", "累計開票金額", "幣種");
for (int i = 0; i < dtName.Rows.Count; i++)
{
DataRow[] rows = dt1.Select(" 委外發票號 =‘" + dtName.Rows[i]["委外發票號"].ToString()
+ "‘ and 委外訂單號=‘" + dtName.Rows[i]["委外訂單號"].ToString()
+ "‘ and 存貨編碼=‘" + dtName.Rows[i]["存貨編碼"].ToString()
+ "‘ and 工藝名稱=‘" + dtName.Rows[i]["工藝名稱"].ToString() + "‘ ");
//temp用來存儲篩選出來的數據
DataTable temp = dtResult.Clone();
foreach (DataRow row in rows)
{
temp.Rows.Add(row.ItemArray);
}

DataRow dr2 = dtResult.NewRow();
dr2["委外發票號"] = dtName.Rows[i]["委外發票號"].ToString();
dr2["委外訂單號"] = dtName.Rows[i]["委外訂單號"].ToString();
dr2["存貨編碼"] = dtName.Rows[i]["存貨編碼"].ToString();
dr2["工藝名稱"] = dtName.Rows[i]["工藝名稱"].ToString();
dr2["訂單數量"] = dtName.Rows[i]["訂單數量"].ToString();
dr2["出庫數量"] = dtName.Rows[i]["出庫數量"].ToString();
dr2["未交數量"] = dtName.Rows[i]["未交數量"].ToString();
dr2["CT不良數"] = dtName.Rows[i]["長騰不良數"].ToString();
dr2["原幣含稅單價"] = dtName.Rows[i]["原幣含稅單價"].ToString();
dr2["原幣價稅合計"] = dtName.Rows[i]["原幣價稅合計"].ToString();
dr2["累計開票金額"] = dtName.Rows[i]["累計開票金額"].ToString();

dr2["幣種"] = dtName.Rows[i]["幣種"].ToString();

dr2["入庫數量"] = temp.Compute("sum(入庫數量)", "");
dtResult.Rows.Add(dr2);
}


//
DataSet9 = new DataSet();
DataSet9.Tables.Add(dtResult);

20180519001 - DataTable Group by功能參考