读书人

|M| 求最科学的两个DataTable 的方法解

发布时间: 2012-01-21 21:31:43 作者: rapoo

|M| 求最科学的两个DataTable 的方法
如我有表
dt1
ID name
1 Age
2 Apple
3 Orange
dt2
ID Price
3 10
1 6
2 7
合并成
ID name Price
1 Age 6
2 Apple 7
3 Orange 10
谢谢



[解决办法]
最简单的两个表关联呀。

select a.id,a.name ,b.price from dt1 a INNER JOIN dt2 b

on a.id= b.id

[解决办法]
学习
[解决办法]
最基本的SQL连接啊!
嗯. 搂主是说 SQL ,还是 别的?
[解决办法]
要看你表的设计了,
Select dt1.ID, dt1.name, dt2.Price From dt1, dt2 Where dt1.ID = dt2.ID
[解决办法]
你的表呢,看看
select a.id,a.name ,b.price from dt1 a INNER JOIN dt2 b

on a.id= b.id
[解决办法]

[解决办法]
还是这个问题哦
[解决办法]
是说的写法么??要是SQL那就用内联


select a.id,a.name ,b.price
from dt1 A
inner join dt2 B
on a.id= b.id
[解决办法]
这样的数据处理 最好是在数据库端 进行.
像上面的用 链表查询 很容易获取
[解决办法]
我看楼主的意思是在DataTable中对数据进行的处理,我有如下的代码,楼主参考下是否合题意:
DataTable dt1 = new DataTable();
dt1.Columns.Add( "ID ", typeof(int));
dt1.Columns.Add( "Name ", typeof(string));
dt1.PrimaryKey = new DataColumn[] { dt1.Columns[0]};
dt1.Rows.Add(1, "Age ");
dt1.Rows.Add(2, "Apple ");
dt1.Rows.Add(3, "Orange ");

DataTable dt2 = new DataTable();
dt2.Columns.Add( "ID ", typeof(int));
dt2.Columns.Add( "Price ", typeof(decimal));
dt2.PrimaryKey = new DataColumn[] { dt2.Columns[0] };
dt2.Rows.Add(1, 10);
dt2.Rows.Add(2, 6);
dt2.Rows.Add(3, 7);

DataTable dt3 = dt1.Copy();
dt3.Merge(dt2);
[解决办法]
先将dt1 dt2添加到 ds里
DataSet ds = new DataSet();
ds.Tables.Add(dt1);
ds.Tables.Add(dt2);

建立 dt1,dt2之间的关系(用ID相联 父表为dt1,子表为dt2 并且父表ID要唯一)
ds.Relations.Add( "关系 ",ds.Tables[0].Columns[ "ID "],ds.Tables[1].Columns[ "ID "]);

================================================
下面为完成代码 供参考
DataRow dr ;
DataTable dt1 = new DataTable();
dt1.Columns.Add( "ID ",typeof(System.Int32));
dt1.Columns.Add( "name ",typeof(System.String));
dr = dt1.NewRow();
dr[ "ID "] = "1 ";
dr[ "name "] = "Age ";
dt1.Rows.Add(dr);
dr = dt1.NewRow();
dr[ "ID "] = "2 ";
dr[ "name "] = "Apple ";
dt1.Rows.Add(dr);
dr = dt1.NewRow();
dr[ "ID "] = "3 ";
dr[ "name "] = "Orange ";
dt1.Rows.Add(dr);

DataTable dt2 = new DataTable();


dt2.Columns.Add( "ID ",typeof(System.Int32));
dt2.Columns.Add( "Price ",typeof(System.String));
dr = dt2.NewRow();
dr[ "ID "] = "3 ";
dr[ "Price "] = "10 ";
dt2.Rows.Add(dr);
dr = dt2.NewRow();
dr[ "ID "] = "1 ";
dr[ "Price "] = "6 ";
dt2.Rows.Add(dr);
dr = dt2.NewRow();
dr[ "ID "] = "2 ";
dr[ "Price "] = "7 ";
dt2.Rows.Add(dr);
//以上为购建两个DataTable 并赋值

DataSet ds = new DataSet();
ds.Tables.Add(dt1);
ds.Tables.Add(dt2);
ds.Relations.Add( "关系 ",ds.Tables[0].Columns[ "ID "],ds.Tables[1].Columns[ "ID "]);
//以上为 填充到DataSet 并建立关系

foreach(DataRow dt1Row in ds.Tables[0].Rows)
{
Response.Write(dt1Row[ "ID "].ToString() + ", " + dt1Row[ "name "].ToString()
+ ", " + dt1Row.GetChildRows( "关系 ")[0][ "Price "].ToString() + " <br> ");
}
//以上为显示结果 (注意:父表与子表是1对1得我关系)
1对多的时候 可以用 foreach(DataRow dt1Row in dt1Row.GetChildRows(关系))取得全部相对应子表数据


[解决办法]
hbxtlhx(平民百姓)的 方法最好

读书人网 >asp.net

热点推荐