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

[datatable]两个DataTable 连接的更多相关文章

  1. 把两个DataTable连接起来,相当于Sql的Inner Join方法

    在C#中把两个DataTable连接起来,相当于Sql的Inner Join方法 作者:浪漫十一狼在下面的例子中实现了3个Join方法,其目的是把两个DataTable连接起来,相当于Sql的Inne ...

  2. 两个DataTable关联查询(inner join、left join)C#代码

    using System; using System.Collections.Generic; using System.Text; using System.Data; namespace Cons ...

  3. 取两个DataTable的交集,删除重复数据

    /// <summary> /// 取两个DataTable的交集,删除重复数据 /// </summary> /// <param name="sourceD ...

  4. C# 两个datatable中的数据快速比较返回交集或差集[z]

    最基本的写法无非是写多层foreach循环,数据量多了,循环的次数是乘积增长的. 这里推荐使用Except()差集.Intersect()交集,具体性能没有进行对比. 如果两个datatable的字段 ...

  5. 将两个DataTable合并成一个DataTable

    转载自 http://blog.csdn.net/wangxiaojia42121/article/details/53330464 谢谢 //两个结构一样的DT合并DataTable DataTab ...

  6. 比较两个DataTable是否相等

    ///   <summary>        ///   比较两个DataTable内容是否相等,先是比数量,数量相等就比内容         ///   </summary> ...

  7. C# 两个datatable中的数据快速比较返回交集或差集

    转自: https://www.cnblogs.com/lacey/p/5893380.html 如果两个datatable的字段完全一致的话,可以直接使用Except,Intersect //Exc ...

  8. C#两个DataTable拷贝问题:该行已经属于另一个表的解决方法

    一.DataTable.Rows.Add(DataRow.ItemArray); 二.DataTable.ImportRow(DataRow) 三.设置DataTable的tablename,然后.R ...

  9. 程序中实现两个DataTable的Left Join效果(修改了,网上第二个DataTable为空,所处的异常)

    public static DataTable Join(DataTable First, DataTable Second, DataColumn[] FJC, DataColumn[] SJC) ...

随机推荐

  1. JQuery分页插件bs_pagination的应用

    一.引入bs_pagination的js文件以及样式文件(项目中需要引用Jquery和bootstrap的相关js和样式文件,且在以下引用之前): <link href="~/Scri ...

  2. Jmeter使用

    好久没有试过Jmeter了,下载个新版本试试,顺便温习一下. 1. 如何修改JMeter语言环境 在菜单栏中通过“选项”–“选择语言”选了英文后,下次登录JMeter,还是显示的中文,修改语言无效.关 ...

  3. python3_RoboBrowser_test

    python3_RoboBrowser_test selenium库作为交互是非常方便的,但是却大大加长了加载的时间,例如需要渲染网址,加载js,造成在爬虫过程中时间变长. 因此找到一个虚拟的浏览器, ...

  4. Apache,PHP,MySQL,PMA手动配置的注意事项

    注:本文之前发布在自己的QQ空间,复制过来的时候,颜色信息丢失了,回头有空再把颜色重新标上! 前言:LAMP(Linux+Apache+MySQL+PHP)环境是目前开源社区最活跃的开发和运行平台,有 ...

  5. mybatis migrate常用指令

    0.制定db和配置文件 --path=xxx --env=dev 1.初始化Migrations工作目录 migrate init 2.创建数据库变更 migrate new "liyq a ...

  6. oracle自动备份

    因为一个项目上马,需要设置自动备份,网上搜索了一下,windows平台下基本上是通过系统的任务计划完成的,于是我也写了一下,无非就是exp xxxx.dmp,文件名是用的日期加时间,精确到秒,一小时备 ...

  7. Hive(四):c#通过odbc访问hive

    hive odbc 驱动配置成功后,通过c#访问就变得比较简单了,分为查询与更新操作,直接附上测试代码.在此过程中需要注意c#工程编译的目标平台 读写访问代码示例: public class Hive ...

  8. 【架构】生成全局唯一ID的3个思路,来自一个资深架构师的总结

    标识(ID / Identifier)是无处不在的,生成标识的主体是人,那么它就是一个命名过程,如果是计算机,那么它就是一个生成过程.如何保证分布式系统下,并行生成标识的唯一与标识的命名空间有着密不可 ...

  9. 【ntp】centos7下ntp服务器设置

    安装ntp #检查服务是否安装 rpm -q ntp #安装ntp服务器 yum -y install ntp 修改配置文件:/etc/ntp.conf 内容如下: restrict default ...

  10. eclipse下编译hadoop源代码(转)

    hadoop是一个分布式存储和分布式计算的框架.在日常使用hadoop时,我们会发现hadoop不能完全满足我们的需要,我们可能需要修改hadoop的源代码并重新编译.打包. 下面将详细描述如何从sv ...