2012-07-29 103 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