[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"] = ; KsDt["客商名称"] = "张三"; Ks.Rows.Add(KsDt); KsDt = Ks.NewRow(); KsDt["ID"] = ; KsDt["客商名称"] = "李四"; Ks.Rows.Add(KsDt); KsDt = Ks.NewRow(); KsDt["ID"] = ; KsDt["客商名称"] = "王武"; Ks.Rows.Add(KsDt); KsDt = Ks.NewRow(); KsDt["ID"] = ; KsDt["客商名称"] = "赵柳"; Ks.Rows.Add(KsDt); //右表数据 KsDt = Dj.NewRow(); KsDt["ID"] = ; KsDt["订单数量"] = ; Dj.Rows.Add(KsDt); KsDt = Dj.NewRow(); KsDt["ID"] = ; KsDt["订单数量"] = ; Dj.Rows.Add(KsDt); KsDt = Dj.NewRow(); KsDt["ID"] = ; KsDt["订单数量"] = ; Dj.Rows.Add(KsDt); KsDt = Dj.NewRow(); KsDt["ID"] = ; KsDt["订单数量"] = ; Dj.Rows.Add(KsDt); KsDt = Dj.NewRow(); KsDt["ID"] = ; KsDt["订单数量"] = ; Dj.Rows.Add(KsDt); KsDt = Dj.NewRow(); KsDt["ID"] = ; KsDt["订单数量"] = ; Dj.Rows.Add(KsDt); KsDt = Dj.NewRow(); KsDt["ID"] = ; KsDt["订单数量"] = ; 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(); } } }
上一篇:2016 Al-Baath University Training Camp Contest-1 F


下一篇:ASP.NET Core MVC – 自定义 Tag Helpers