如下:
//DataTable1,DataTable2已经建好的内存数据表DataSet1,这是建好的内存//数据库,把刚才的DataTable1,DataTable2添加进去:
DataSet1.Tables.Add(DataTable1);
DataSet1.Tables.Add(DataTable2);
//然后用DataRelation关系对象
DataRelation
relation=new
DataRelation("关系名字",DataTable1.Columns["列名"],DataTable2.Columns["列名"])
GridView1.DataSource=DataSet1
GridView1.DataBind()
基本就是这样,里面方法参数的含义你再研究一下。
如果是oracle的话,可以增加一个伪列进行full joinselect
v1.id,v1.user,v1.pass
,v2.id,v2.user,v2.pass
from
(select rownum rn1,id,user,pass from a表 t1) v1
full join
(select rownum rn2,id,user,pass from b表 t2) v2
on v1.rn1=v2.rn2
只是一个思路,如果是access或者sqlserver的可能要改动伪劣的获取方法
另外就是取两个DataTable出来,手工合并
// 直接模拟了两个表,从数据库取DataTable就不写了
DataTable dt1 = new DataTable()
dt1.Columns.Add("id")
dt1.Columns.Add("user")
dt1.Columns.Add("pass")
DataTable dt2 = dt1.Clone()
dt1.Rows.Add(new object[] {1,"a","b" })
dt1.Rows.Add(new object[] {2,"v","m" })
dt2.Rows.Add(new object[] {2,"s","b" })
dt2.Rows.Add(new object[] {3,"l","n" })
DataTable dt_dest = dt1
DataTable dt_source = dt2
if(dt2.Rows.Count >dt1.Rows.Count)
{
dt_dest = dt2
dt_source = dt1
}
dt_dest.Columns.Add("id_b")
dt_dest.Columns.Add("user_b")
dt_dest.Columns.Add("pass_b")
dt_dest.Columns["id_b"].Caption = "id"
dt_dest.Columns["user_b"].Caption = "user"
dt_dest.Columns["pass_b"].Caption = "pass"
for(int i = 0i <dt_source.Rows.Counti++)
{
DataRow dest_row = dt_dest.Rows[i]
DataRow src_row = dt_source.Rows[i]
dest_row["id_b"] = src_row["id"]
dest_row["user_b"] = src_row["user"]
dest_row["pass_b"] = src_row["pass"]
}
dt_dest.AcceptChanges()
dt_dest应该就是你要的数据了
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)