[datatable]兩個DataTable 連接


using System;

using System.Collections.Generic;

using System.Text;

using System.Data;

namespace ConsoleApplication7
{

    class Program
    {



        static void Main(string[] args)
        {

            DataSet ds = new DataSet();



            //以下示例實現 利用dataset的Relations為兩個DataTable創建類似SQL中Left join 的效果

            //From chj

            //定義數據結構

            DataTable Ks = new DataTable("客商"); //左表or主表

            DataColumn dcID = new DataColumn("ID", System.Type.GetType("System.Int32"));

            DataColumn dcNa = new DataColumn("客商名稱", System.Type.GetType("System.String"));

            Ks.Columns.Add(dcID);

            Ks.Columns.Add(dcNa);



            DataTable Dj = new DataTable("訂單");//右表or子表

            DataColumn dcID2 = new DataColumn("ID", System.Type.GetType("System.Int32"));

            DataColumn dcNu = new DataColumn("訂單數量", System.Type.GetType("System.Int32"));

            Dj.Columns.Add(dcID2);

            Dj.Columns.Add(dcNu);





            //左表數據

            DataRow KsDt = Ks.NewRow();

            KsDt["ID"] = 11;

            KsDt["客商名稱"] = "張三";

            Ks.Rows.Add(KsDt);



            KsDt = Ks.NewRow();

            KsDt["ID"] = 12;

            KsDt["客商名稱"] = "李四";

            Ks.Rows.Add(KsDt);



            KsDt = Ks.NewRow();

            KsDt["ID"] = 13;

            KsDt["客商名稱"] = "王武";

            Ks.Rows.Add(KsDt);



            KsDt = Ks.NewRow();

            KsDt["ID"] = 14;

            KsDt["客商名稱"] = "趙柳";

            Ks.Rows.Add(KsDt);





            //右表數據

            KsDt = Dj.NewRow();

            KsDt["ID"] = 11;

            KsDt["訂單數量"] = 10;

            Dj.Rows.Add(KsDt);



            KsDt = Dj.NewRow();

            KsDt["ID"] = 12;

            KsDt["訂單數量"] = 20;

            Dj.Rows.Add(KsDt);





            KsDt = Dj.NewRow();

            KsDt["ID"] = 11;

            KsDt["訂單數量"] = 12;

            Dj.Rows.Add(KsDt);



            KsDt = Dj.NewRow();

            KsDt["ID"] = 12;

            KsDt["訂單數量"] = 16;

            Dj.Rows.Add(KsDt);





            KsDt = Dj.NewRow();

            KsDt["ID"] = 13;

            KsDt["訂單數量"] = 30;

            Dj.Rows.Add(KsDt);



            KsDt = Dj.NewRow();

            KsDt["ID"] = 14;

            KsDt["訂單數量"] = 40;

            Dj.Rows.Add(KsDt);



            KsDt = Dj.NewRow();

            KsDt["ID"] = 15;

            KsDt["訂單數量"] = 1250;

            Dj.Rows.Add(KsDt);



            ds.Tables.Add(Ks);

            ds.Tables.Add(Dj);



            //建立兩內存表的鏈接

            //沒有為 createConstraints 標志指定任何值(默認為 true),它假定 子 表中的所有行都具有一個存在於父表中的主鍵值。

            //如果子列可能包含父列不包含的值,添加 DataRelation 時請將 createConstraints 標志設置為 false。

            ds.Relations.Add("左聯", Ks.Columns["ID"], Dj.Columns["ID"], false);



            //歷遍父表所有的行並賦值給parentRow

            foreach (DataRow parentRow in ds.Relations["左聯"].ParentTable.Rows)
            {

                //歷遍parentRow相關的所有子行並賦值給childRow

                foreach (DataRow childRow in parentRow.GetChildRows(ds.Relations["左聯"]))
                {

                    Console.WriteLine("父表中的ID:{0}  父表中的客商名稱: {1}  子表中的訂單數量:{2}", parentRow["ID"], parentRow["客商名稱"], childRow["訂單數量"]);



                }



            }

            Console.ReadLine();



        }

    }

}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM