DataTable表连接
public static System.Data.DataTable TableJoin(System.Data.DataTable dt, System.Data.DataTable dtDetail, string[] parentFieldName, string[] relationFieldName, bool isInnerJoin, string relationName = "")
{
System.Data.DataTable joinDt = new System.Data.DataTable(); try
{
using (DataSet ds = new DataSet())
{
ds.Tables.AddRange(new System.Data.DataTable[] { dt, dtDetail });
if (string.IsNullOrEmpty(relationName))
{
relationName = Guid.NewGuid().ToString();
}
List<DataColumn> parentc = new List<DataColumn>();
List<DataColumn> childc = new List<DataColumn>();
foreach (var item in parentFieldName)
{
parentc.Add(dt.Columns[item]);
}
foreach (var item in relationFieldName)
{
childc.Add(dtDetail.Columns[item]);
}
DataRelation relation = new DataRelation(relationName, parentc.ToArray(), childc.ToArray(), false);
ds.Relations.Add(relation); for (int i = ; i < dt.Columns.Count; i++)
{
joinDt.Columns.Add(dt.Columns[i].ColumnName, dt.Columns[i].DataType);
}
for (int i = ; i < dtDetail.Columns.Count; i++)
{
joinDt.Columns.Add(dtDetail.Columns[i].ColumnName, dtDetail.Columns[i].DataType);
} joinDt.BeginLoadData();
foreach (DataRow firstrow in ds.Tables[].Rows)
{
//得到行的数据
DataRow[] childrows = firstrow.GetChildRows(relation);
object[] parentarray = firstrow.ItemArray;
if (childrows != null && childrows.Length > )
{
foreach (DataRow childrow in childrows)
{
object[] childarray = childrow.ItemArray;
object[] joinarray = new object[parentarray.Length + childarray.Length];
Array.Copy(parentarray, , joinarray, , parentarray.Length);
Array.Copy(childarray, , joinarray, parentarray.Length, childarray.Length);
joinDt.LoadDataRow(joinarray, true);
}
}
else
{
if (!isInnerJoin)
{
joinDt.LoadDataRow(parentarray, true);
}
}
}
joinDt.EndLoadData();
}
}
catch (Exception ex)
{
throw ex;
} return joinDt;
}
DataTable表连接的更多相关文章
- 把Linq查询返回的var类型的数据 转换为DataTable EF连接查询
问题:我要获得一个角色下对应的所有用户,需要两表连接查询,虽然返回的只有用户数据,但是我想到若是返回的不只是用户数据,而还要加上角色信息,那么我返回什么类型呢,返回var吗,这样不行. 于是我网上找找 ...
- SQL多表连接查询(详细实例)
转载博客:joeleo博客(http://www.xker.com/page/e2012/0708/117368.html) 本文主要列举两张和三张表来讲述多表连接查询. 新建两张表: 表1:stud ...
- 关于Oracle表连接
表连接注意left join on与where的区别: select * from dept; select * from emp; select * from emp a right outer j ...
- SQL多表连接查询
SQL多表连接查询 本文主要列举两张和三张表来讲述多表连接查询. 新建两张表: 表1:student 截图如下: 表2:course 截图如下: (此时这样建表只是为了演示连接SQL语句,当然实际 ...
- oracle(sql)基础篇系列(二)——多表连接查询、子查询、视图
多表连接查询 内连接(inner join) 目的:将多张表中能通过链接谓词或者链接运算符连接起来的数据查询出来. 等值连接(join...on(...=...)) --选出雇员的名字和雇员所 ...
- Access数据库多表连接查询
第一次在Access中写多表查询,就按照MS数据库中的写法,结果报语法错,原来Access的多表连接查询是不一样的 表A.B.C,A关联B,B关联C,均用ID键关联 一般写法:select * fro ...
- PostgreSQL-join多表连接查询和子查询
一.多表连接查询 1.连接方式概览 [inner] join 内连接:表A和表B以元组为单位做一个笛卡尔积,记为表C,然后在C中挑选出满足符合on 语句后边的限制条件的内容. left [outer] ...
- SQL 中不同类型的表连接
http://www.linuxidc.com/Linux/2012-08/68035.htm 1.简介 在关系型数据库中,join操作是将不同的表中的数据联合在一起时非常通用的一种做法.首先让我们看 ...
- SQL表连接查询(inner join、full join、left join、right join)
SQL表连接查询(inner join.full join.left join.right join) 前提条件:假设有两个表,一个是学生表,一个是学生成绩表. 表的数据有: 一.内连接-inner ...
随机推荐
- centos mongodb
cd到mongodb目录下的bin文件夹,执行命令./mongo 运行如下: [root@namenode mongodb]# ./bin/mongo MongoDB shell version: 1 ...
- 解题(LevenshteinInstance--Levenshtein距离)
题目描述 Levenshtein 距离,又称编辑距离,指的是两个字符串之间,由一个转换成另一个所需的最少编辑操作次数.许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符.编辑距离 ...
- Linux下鼠标滚轮速度调整
安装imwheel 于home下创建.imwheelrc gedit ~/.imwheelrc 在.imwheelrc中粘贴以下内容 ".*" None, Up, Button4, ...
- 修改app工程名 Android Studio
1.关掉AndroidStudio,在原项目最外层文件夹和内部xxx.iml上直接重新命名, 2.然后重新打开AndroidStudio,加载项目, 3.最后
- leetcode 字符串类型题
1,Vaild Palindrome bool isPalindrome(string& s) { transform(s.begin(), s.end(), s.begin(), tolow ...
- 使用phpStudyy运行tipask
tipask官网:https://www.tipask.com/tipask源码下载:https://www.tipask.com/download.html 可参考此处安装文档的链接 除此之外可以参 ...
- Nginx搭建正向代理服务器
配置如下: server { listen 8888; #监听端口 location / { res ...
- 转:JMeter压力测试及并发量计算
最近的一个项目刚刚开发完,因为不是专业测试人员,所以记录下测试过程以备时间长忘记了. 一.JMeter的安装(Linux)1. 下载JMeter:这个就不细说了,直接去(http://jmeter.a ...
- 封装JedisClient.提供API实现对redis的操作
需要导包,jedis-2.8.1.jar和博主的序列化工具类SerializeUtils package com.demo.redis; import java.util.ArrayList; imp ...
- JAVA之1000字感想
在经过Java自学的测试之后,我发现了自己所暴露的问题. 第一, 对于没有解决的问题始终没有解决,比如对文件的导入导出,在假期自学的时候就没有弄懂,现在依然没有解决,而现在没有解决,以后对于数据库 ...