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(); } } }