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. Zookeeper工作原理一

    ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等.Zookeeper是hadoop的一个子项目,其 ...

  2. python之时间函数

    import time print(time.clock())print(time.process_time())print(time.time()) #返回当前系统时间戳print(time.cti ...

  3. du命令 实现Linux 某个文件夹下的文件按大小排序

    1. df -lh 2. du -s /usr/* | sort -rn这是按字节排序 3. du -sh /usr/* | sort -rn这是按兆(M)来排序 4.选出排在前面的10个du -s ...

  4. 每日学习心得:SQL查询表的行列转换/小计/统计(with rollup,with cube,pivot解析)

    2013-8-20 1.    SQL查询表的行列转换/小计/统计(with  rollup,with cube,pivot解析) 在实际的项目开发中有很多项目都会有报表模块,今天就通过一个小的SQL ...

  5. FileReader 基本介绍

    转自:http://blog.csdn.net/zk437092645/article/details/8745647 用来把文件读入内存,并且读取文件中的数据.FileReader接口提供了一个异步 ...

  6. Python基础教程【读书笔记】 - 2016/8/3

    希望通过博客园持续的更新,分享和记录Python基础知识到高级应用的点点滴滴! 第十一波:第11章  文件和素材 本章更进一步,让程序能够接触更多的领域:文件和流.接下来介绍的函数和对象可以让你在程序 ...

  7. 剑指offer系列52---约瑟夫环问题

    [题目]0,1,...n排成一个圈,从0开始每次删除第m个数,求圆圈最后个数. * [思路]1 用数组模拟圆圈.当数到最后一个数即index==n时,令index==0 重头开始遍历: * 当遇到已经 ...

  8. 查询SQLServer 服务器,执行过的SQL语句耗时!

    SELECT creation_time N'语句编译时间',last_execution_time N'上次执行时间',total_physical_reads N'物理读取总次数',total_l ...

  9. 就Double、Decimal来说数据计算异常

    场景: 客户提示发料时提示库存不足,可肉眼比对发料数量与库存数量没有一点问题. 但调度跟踪却发现出现“不可思议”的异常. 简单分析: 1.转Decimal再计算没问题.精度较高,存储方法也不一样,所以 ...

  10. 黄聪:手机移动端建站Jquery+CSS3+HTML5触屏滑动特效插件、实现触屏焦点图、图片轮展图

    前言 TouchSlide 可以说是 SuperSlide 手机简化版,不同的地方在于:1.TouchSlide是纯javascript开发的,不依赖任何js库,鉴于此,TouchSlide调用方法和 ...