DataSet中进行Join操作

我们知道在T-SQL查询中可以很方便地将两个甚至是多个表的数据进行连接(join)操作,其结果就是新的结果集将包含多个表的列数据。

如果是在 客户端的DataSet中,也希望实现这样的效果,那么需要怎么做呢?

protected override void OnLoad(EventArgs e)
{
    DataSet ds = PrepareDataSet();
     gvCustomers.DataSource = ds.Tables[0];
     gvOrders.DataSource = ds.Tables[1];
}
///  <summary>
/// 这个方法准备10个客户,每个客户有5个订单
/// </summary>
/// <returns></returns>
private DataSet PrepareDataSet()
{
    DataSet ds  = new DataSet();
    DataTable tb1 = new DataTable ("Customers");
    tb1.Columns.AddRange(new[]
         {
            new DataColumn("CustomerID")
            ,new DataColumn("CompanyName")
         });
    DataTable tb2 = new DataTable ("Orders");
    tb2.Columns.AddRange(new[]
         {
            new DataColumn("CustomerID")
            ,new DataColumn("OrderID",typeof(int))
            ,new DataColumn("OrderDate",typeof (DateTime))
        });
    ds.Tables.AddRange (new[] { tb1, tb2 });
    //添加关系
     ds.Relations.Add("Customers_Orders_Relation", tb1.Columns ["CustomerID"], tb2.Columns["CustomerID"]);
    for (int x  = 0; x < 10; x++)
    {
         DataRow customer = tb1.NewRow();
        customer[0]  = "CustomerID:" + x.ToString();
        customer[1] =  "Company:" + x.ToString();
        tb1.Rows.Add (customer);
        for (int y = 0; y < 5;  y++)
        {
            DataRow  order = tb2.NewRow();
            order[0] =  "CustomerID:" + x.ToString();
            order [1] = (y + 1) * 1000;
            order[2] =  DateTime.Now;
            tb2.Rows.Add(order);
        }
    }
    return ds;
}

时间: 2024-10-20 07:12:45

DataSet中进行Join操作的相关文章

mongodb-spring data mongo使用@DBRef,怎么执行一个类似sql中的join操作

问题描述 spring data mongo使用@DBRef,怎么执行一个类似sql中的join操作 解决方案 假设我要获取title,name两个字段,我该如何操作?翻了很多资料没好方法,, 解决方案二: 我这么操作,会获得User的所有字段,怎么获取指定字段呢? 我的操作是下面这样: @Query(value="{}", fields="{'title':1, 'user':1}") List<Archive> search(); 结果: [{&qu

SQL点滴2—重温sql语句中的join操作

原文:SQL点滴2-重温sql语句中的join操作 1.join语句 Sql join语句用来合并两个或多个表中的记录.ANSI标准SQL语句中有四种JOIN:INNER,OUTER,LEFTER,RIGHT,一个表或视图也可以可以和它自身做JOIN操作.下面举例说明.下面所举的例子使用的表有Employee和Department,在这两个表中Department.DepartmentID是主键,Employee.DepartmentID是外键. 图1-Employee表 LastName De

dataset中根据条件多个表联合查询

问题描述 我是将一个复杂的xml文件加载到dataset中,dataset自动生成了好多表,并且给这些表之间生成了关系,然后怎么在dataset中进根据条件多个表联合查询.请高手解决!小弟在此谢谢了! 解决方案 解决方案二:你可以参考DataSet中进行Join操作http://www.cnblogs.com/chenxizhang/archive/2009/04/29/1445994.html在VisualC#.net中实现DataSetJOIN帮助器类http://support.micro

在MySQL中使用JOIN语句进行连接操作的详细教程_Mysql

到目前,我们已经学习了从一个表中获取数据.这是简单的需要,但在大多数现实MySQL的使用,经常需要将数据从多个表中的一个单一的查询. 可以使用多个表中的单一SQL查询.在MySQL中联接(join)行为是指两个或多个表到一个表中可以使用连接在SELECT,UPDATE和DELETE语句中加入MySQL表.我们将看到一个例子LEFT JOIN简单的MySQL连接.在命令提示符使用联接: 假设我们两个表的教程tcount_tbl和tutorials_tbl的完整列表如下: 例子: 试试下面的例子:

亲密接触ASP.Net(9) 在一个DataSet中储存多个数据表

在一个DataSet中储存多个数据表 我们在ASP中很多人习惯于使用RecordSet对象来操作数据库,但是RecordSet有一个的缺点就是一个RecordSet只能储存一个数据表,当我们需要操作多个表时,不得不在多个RecordSet中来回操作,虽然这些在使用习惯后也没有什么,但是对一个新手来说,这也是一个很麻烦人的事情.光是那些变量名就可以搞浑你,现在好了,在ASP.Net中,只需要一个DataSet就可以搞定一切.大大的方便了我们的程序.我们还是老样子,先看一段程序,再来细细讲解. <%

浅谈查询优化器中的JOIN算法

查询优化器都是支持JOIN操作的,而SQL Server 中主要有以下三类JOIN算法:Nested Loop.Sort-Merge以及Hash Join.尽管每种算法都并不是很复杂,但考虑到性能优化,在产品级的优化器实现时往往使用的是改进过的变种算法.譬如SQL Server 支持block nested loops.index nexted loops.sort-merge.hash join以及hash team.我们在这里只对上述三种基本算法的原型做一个简单的介绍. [假设]有两张表R和

C# 3.0入门系列(十)-之Join操作

本节讲join操作.我们知道,T-sql中,有三种最基本的join,inner join, left join, 和right join. 而dlinq并不支持right join.道理很简单,right join以right表为基础,left表中没有对应记录的,将以null值填充.而dlinq以left表做为主表创建对象.如果一个对象为null,你如何获取它的其他的属性呢? 在C# 3.0入门系列(四)-之Select操作一文中,我们提到了query expression首先会被翻译成标准的A

python中list常用操作实例详解

  本文实例讲述了python中list常用操作.分享给大家供大家参考.具体分析如下: 1.定义list ? 1 2 3 4 5 6 7 >>> li = ["a", "b", "mpilgrim", "z", "example"] >>> li ['a', 'b', 'mpilgrim', 'z', 'example'] >>> li[0] 'a' &

MySQL的JOIN操作

下面简答介绍下MySQL中常用的JOIN操作,以及会犯得一些简单错误 tips:图是引用网络,如果错误,请指出,感谢. 在MySQL中,逗号(','), JOIN, CROSS JOIN, INNER JOIN在语法上是等价的,能够互相替换(在标准SQL中,它们是不等价的) 然而,逗号(',')运算的优先级小于JOIN, CROSS JOIN, INNER JOIN, LEFT JOIN等, 如果混合使用,则会造on列子句中出现"Unknown column 'col_name' "错