DataSet追加 满意答案追加200分 2个DataSet 就是在第一个DataSet列后面 加上第二个DataSet中的列foreach (DataColumn column in db.Tables[0].Columns){ ds.Tables[0].Columns.Add(column);}他老是暴 列已经存在 去求高手 解答下 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 foreach 前把 ds new一下肯定是第二次运行出的问题或者 ds.tables[0].columns.clear(); 不能这样加,因为这个column已经是其它datatable的一个column了。这样写:foreach (DataColumn column in db.Tables[0].Columns){ DataColumn newColumn = new DataColumn(column.ColumnName, column.DataType); ds.Tables[0].Columns.Add(newColumn);} 明白意思没有??同一个DataColumn的实例,不能同时属于两个DataTable。就好像一人不能同时是两个人的亲生儿子一样(如果要的话,只能去重新new一个一模一样的)。 因为你遍历出来的column依然是属于db.Tables[0]的,当然会加不上你可以写成ds.Tables[0].Columns.Add(column.ColumnName); foreach (DataColumn column in db.Tables[0].Columns){ DataColumn c = new DataColumn (); c.ColumnName = column.ColumnName ; c.DataType = column.DataType ds.Tables[0].Columns.Add(c);} 你的问题就是,Column的名称没有指定,第二次添加的时候名称相同,肯定报错“列已经存在”所以要指定列名 把row也遍历一下呗foreach (DataRow row in db.Tables[0].Rows){ DataRow r = datatable.NewRow();//datatable是你第二个dataset中的表列已经添加完毕 for (int i = 0; i < row.ItemArray.Length; i++) { r[i] = row[i]; }datatable.Rows.Add(r);} 其实如果你使用的。net版本高的话,可以直接使用它的copy方法,直接拷贝结构和数据DataSet dataset2 = new DataSet();DataTable dt = dataset1.Tables[0].Copy();dataset2.Tables.Add(dt); 你可以试一试 http://msdn.microsoft.com/zh-cn/library/aszytsd8(VS.80).aspx datatable 合并DataTable dt1=new DataTable(); dt1.Columns.Add("ID",typeof(int)); dt1.Columns.Add("Name",typeof(string)); dt1.PrimaryKey=new DataColumn[] { dt1.Columns[0] }; DataTable dt2=new DataTable(); dt2.Columns.Add("ID",typeof(int)); dt2.Columns.Add("MC",typeof(string));DataTable dt3= dt1.Copy(); dt3.Merge(dt2); DataTable curDt = dt2.Copy(); //curDt存放合并后的值 if(!curDt.Columns.Cotains("B")) curDt.Columns.Add("B"); for(int r = 0; r < dt2.Rows.Count; r++) { DataRow dr = dt2.Rows[r]; string aValue = dr["A"].ToString().ToUpper(); foreach(DataRow tDr in dt1.Rows) { string tValue = tDr["A"].ToString().ToUpper(); if(tValue == aValue) { curDt.Rows[r]["B"] = tDr["B"]; break; } } } 这样怎么会没有数据呢 DataSet dataset1 = new DataSet(); DataTable table = new DataTable(); DataColumn col1 = new DataColumn("name",typeof(string)); DataColumn col2 = new DataColumn("age", typeof(Int32)); table.Columns.Add(col1); table.Columns.Add(col2); DataRow row1 = table.NewRow(); row1[0] = "Jim"; row1[1] = 20; table.Rows.Add(row1); DataRow row2 = table.NewRow(); row2[0] = "Peter"; row2[1] = 21; table.Rows.Add(row2); dataset1.Tables.Add(table); DataSet dataset2 = new DataSet(); DataTable newTable = dataset1.Tables[0].Copy(); dataset2.Tables.Add(newTable);dataset2.Tables[0]是有数据的,我不知道你的是怎么弄的据说以前的.net版本中没有copy函数,如果你用的是旧版本的.net那就用这种呗 DataSet dataset1 = new DataSet(); DataTable table = new DataTable(); DataColumn col1 = new DataColumn("name",typeof(string)); DataColumn col2 = new DataColumn("age", typeof(Int32)); table.Columns.Add(col1); table.Columns.Add(col2); DataRow row1 = table.NewRow(); row1[0] = "Jim"; row1[1] = 20; table.Rows.Add(row1); DataRow row2 = table.NewRow(); row2[0] = "Peter"; row2[1] = 21; table.Rows.Add(row2); dataset1.Tables.Add(table); DataSet dataset2 = new DataSet(); DataTable newTable = new DataTable(); foreach (DataColumn column in dataset1.Tables[0].Columns) { DataColumn c = new DataColumn(); c.ColumnName = column.ColumnName; c.DataType = column.DataType; newTable.Columns.Add(c); } foreach (DataRow row in dataset1.Tables[0].Rows) { DataRow r = newTable.NewRow(); for (int i = 0; i < row.ItemArray.Length; i++) { r[i] = row[i]; } newTable.Rows.Add(r); } dataset2.Tables.Add(newTable);我都测试过没问题的啊 VS2005 创建新项目时没有ASP.NET web应用程序项目是怎么回事? asp.net 如果实现发送邮件 求锐浪做的打印 发票的例子 数据存入DBF文件问题 这个项目的思路是什么 比较难 请教高手 ASP.NET开发出来的网页,别人访问时,问什么如此之慢? 不同国家访问的一个解决方案,大家来提提意见,也许对你也有帮助哦 grid view 选不中第一行?点击鼠标选中后如何实现再次单击去掉选中? 在.net中引用excell问题 搞不懂了,请求帮忙! 求一个播放器代码! asp.net类似淘宝购物的效果
这样写:
foreach (DataColumn column in db.Tables[0].Columns)
{
DataColumn newColumn = new DataColumn(column.ColumnName, column.DataType);
ds.Tables[0].Columns.Add(newColumn);
}
你可以写成
ds.Tables[0].Columns.Add(column.ColumnName);
foreach (DataColumn column in db.Tables[0].Columns)
{
DataColumn c = new DataColumn ();
c.ColumnName = column.ColumnName ;
c.DataType = column.DataType
ds.Tables[0].Columns.Add(c);
}
你的问题就是,Column的名称没有指定,第二次添加的时候名称相同,肯定报错“列已经存在”
所以要指定列名
foreach (DataRow row in db.Tables[0].Rows)
{
DataRow r = datatable.NewRow();//datatable是你第二个dataset中的表列已经添加完毕
for (int i = 0; i < row.ItemArray.Length; i++)
{
r[i] = row[i];
}
datatable.Rows.Add(r);
}
DataSet dataset2 = new DataSet();
DataTable dt = dataset1.Tables[0].Copy();
dataset2.Tables.Add(dt); 你可以试一试
DataTable dt1=new DataTable();
dt1.Columns.Add("ID",typeof(int));
dt1.Columns.Add("Name",typeof(string));
dt1.PrimaryKey=new DataColumn[] { dt1.Columns[0] };
DataTable dt2=new DataTable();
dt2.Columns.Add("ID",typeof(int));
dt2.Columns.Add("MC",typeof(string));DataTable dt3= dt1.Copy();
dt3.Merge(dt2);
DataTable curDt = dt2.Copy(); //curDt存放合并后的值
if(!curDt.Columns.Cotains("B")) curDt.Columns.Add("B"); for(int r = 0; r < dt2.Rows.Count; r++)
{
DataRow dr = dt2.Rows[r];
string aValue = dr["A"].ToString().ToUpper();
foreach(DataRow tDr in dt1.Rows)
{
string tValue = tDr["A"].ToString().ToUpper();
if(tValue == aValue)
{
curDt.Rows[r]["B"] = tDr["B"];
break;
}
}
}
DataSet dataset1 = new DataSet(); DataTable table = new DataTable();
DataColumn col1 = new DataColumn("name",typeof(string));
DataColumn col2 = new DataColumn("age", typeof(Int32));
table.Columns.Add(col1);
table.Columns.Add(col2);
DataRow row1 = table.NewRow();
row1[0] = "Jim";
row1[1] = 20;
table.Rows.Add(row1); DataRow row2 = table.NewRow();
row2[0] = "Peter";
row2[1] = 21;
table.Rows.Add(row2); dataset1.Tables.Add(table); DataSet dataset2 = new DataSet();
DataTable newTable = dataset1.Tables[0].Copy();
dataset2.Tables.Add(newTable);
dataset2.Tables[0]是有数据的,我不知道你的是怎么弄的
据说以前的.net版本中没有copy函数,如果你用的是旧版本的.net
那就用这种呗 DataSet dataset1 = new DataSet(); DataTable table = new DataTable();
DataColumn col1 = new DataColumn("name",typeof(string));
DataColumn col2 = new DataColumn("age", typeof(Int32));
table.Columns.Add(col1);
table.Columns.Add(col2);
DataRow row1 = table.NewRow();
row1[0] = "Jim";
row1[1] = 20;
table.Rows.Add(row1);
DataRow row2 = table.NewRow();
row2[0] = "Peter";
row2[1] = 21;
table.Rows.Add(row2); dataset1.Tables.Add(table);
DataSet dataset2 = new DataSet();
DataTable newTable = new DataTable();
foreach (DataColumn column in dataset1.Tables[0].Columns)
{
DataColumn c = new DataColumn();
c.ColumnName = column.ColumnName;
c.DataType = column.DataType;
newTable.Columns.Add(c);
}
foreach (DataRow row in dataset1.Tables[0].Rows)
{
DataRow r = newTable.NewRow();
for (int i = 0; i < row.ItemArray.Length; i++)
{
r[i] = row[i];
}
newTable.Rows.Add(r);
}
dataset2.Tables.Add(newTable);我都测试过没问题的啊