web-dev-qa-db-ja.com

データテーブルを関連するデータセットに変換するにはどうすればよいですか

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に給与の詳細が含まれているDataSetに、このデータをどのようにロードできますか?

10
MillinMo

DataSetは、DataTablesのコレクションにすぎません。したがって、dataTableを単純にdataSetに「ロード」するには、次のように追加します。

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

どういうわけかデータテーブルを「結合」しますか?各従業員の給料を受け取りますか?

15
Mitja Bonca

手動挿入なしのコード:

       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);
4
      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);
1