2012-07-29 98 views
6

我在DataTable中有非規格化的數據。如何將數據錶轉換爲相關數據集

數據包含員工姓名,以及他們在一系列薪酬週期中獲得的報酬。即:

我的DataTable包含:

Employee 1   Jan-1-2012   $100 
Employee 2   Jan-1-2012   $300 
Employee 1   Feb-1-2012   $400 
Employee 2   Feb-1-2012   $200 
Employee 1   Mar-1-2012   $150 
Employee 2   Mar-1-2012   $325 

這個數據如何可以加載到其中的父DataTable包含員工的名字,孩子DataTable包含薪水的細節數據集呢?

+0

你提的問題不夠具體,這就是爲什麼你得到下面的答案。如果您提供瞭如何讓「父」和「子」數據表看起來像樣的示例,那麼也許其他人可以給出您期望的答案。 – 2016-05-17 01:01:33

回答

11

DataSet不過是DataTable的集合。所以,「裝入」數據表到數據集簡單添加:

 DataTable employees = new DataTable(); 
     DataTable payCheckes = new DataTable(); 
     DataSet ds = new DataSet(); 
     ds.Tables.Add(employees); 
     ds.Tables.Add(payCheckes); 

你想「結合」的DataTable不知何故? 獲得每位員工的工資?

+0

我不知道你說的話與我所問的有什麼關係。 – MillinMo 2012-07-29 16:36:12

+1

@MillinMo - 也許我們不確定你在問什麼。 – 2012-07-29 16:55:25

+0

正如@亨克所說,你沒有問任何這樣的確切問題,如如何創建數據表之間的關係,或類似的東西。請繼續問問題。 – 2012-07-29 17:08:03

1
 DataSet ds = new DataSet(); 
     DataTable dtemploye = new DataTable(); 
     DataColumn dcnameemploye = new DataColumn(); 
     DataColumn dcIdemploye = new DataColumn(); 
     dtemploye.Columns.AddRange(new DataColumn[]{dcnameemploye,dcIdemploye}); 

     DataTable dtpayment = new DataTable(); 
     DataColumn dtprice = new DataColumn(); 
     DataColumn dtDate = new DataColumn(); 
     DataColumn dcIdemployeprice = new DataColumn(); 
     dtpayment.Columns.AddRange(new DataColumn[]{dcIdemployeprice,dtprice,dtDate}); 

     DataRow drrowemploy = dtemploye.NewRow(); 
     drrowemploy[0] = "1"; 
     drrowemploy[1] = "Employee 1"; 
     dtemploye.Rows.Add(drrowemploy); 

     DataRow drrowpayment = dtpayment.NewRow(); 
     drrowpayment[0] = "1"; 
     drrowpayment[0] = "01/01/2012"; 
     drrowpayment[1] = " 300"; 


     ds.Tables.AddRange(new DataTable[]{dtemploye, dtpayment}); 

     DataRelation drrelation = new DataRelation("relemploy_payment", dcIdemploye, dcIdemployeprice); 
     ds.Relations.Add(drrelation); 
+0

我不確定你說的話與我的要求有什麼關係。 – MillinMo 2012-07-29 16:41:33

+0

hello,試試it.it將數據加載到2個數據表中,並建立數據表父(員工)和數據表的子(支付) – 2012-07-29 16:49:12

+0

之間的關係,當然如果你的數據來自sql server你不需要手動插入數據 – 2012-07-29 16:50:18

3

無需手動插入代碼:

 DataSet ds = new DataSet(); 
     DataTable dtemploye = new DataTable(); 
     DataTable dtpayment = new DataTable(); 

     ds.Tables.AddRange(new DataTable[] { dtemploye, dtpayment }); 
     DataColumn dcIdemploye = dtemploye.Columns["ID_EMPLOYEE"]; 
     DataColumn dcIdemployeprice = dtpayment.Columns["ID_EMPLOYEE"]; 
     DataRelation drrelation = new DataRelation("relemploy_payment", dcIdemploye, dcIdemployeprice); 
     ds.Relations.Add(drrelation); 
+0

,您必須將此列綁定到dcIdemploye = dtemploye.Columns [「ID_EMPLOYEE」]的正確父列 – 2012-07-29 16:54:47