4个回答
展开全部
可以用复制的方式,如你想复制前三行,首先要有一个ID列,如下代码,实现查询dataset中ID<=2的数据
DataSet dataset1 = new DataSet();
dataset1.Tables.Add(new DataTable("table1"));
dataset1.Tables["table1"].Columns.Add("ID", typeof(int));
dataset1.Tables["table1"].Columns.Add("Name", typeof(string));
dataset1.Tables["table1"].Rows.Add(1, "张三");
dataset1.Tables["table1"].Rows.Add(2, "李四");
dataset1.Tables["table1"].Rows.Add(3, "王五");
DataSet dataset2 = dataset1.Clone();
DataRow[] copyRows = dataset1.Tables["table1"].Select("ID<=2", "ID DESC");
DataTable customerTable = dataset2.Tables["table1"];
foreach (DataRow copyRow in copyRows)
customerTable.ImportRow(copyRow);
展开全部
有DataSetA,和DataSetB,结构相同,表中的数据相同(有关键字),但是表中的数据顺序不同。
如DataSetA中表A的数据为 DataSetB中表B的数据为
Zsort Zdhz Zsz Zsort Zdhz Zsz
1 资产部类总计 1000 11 资产类合计 0
11 资产类合计 500 1101 存款 0
1101 存款 500 1 资产部类总计 0
如何把DataSetA的A表中资产部类总计数据赋值到DataSet的B的表中的资产部类总计数据、资产部类合计数据赋值到DataSet的B的表中的资产部类合计数据、。。。。。。
解决思路1:
假如直接(for int i =0;i<DataSetA.Tables[0].Count;i++)
{
DataRow dtRow1= DataSetA.Tables[0].Rows[i];
DataRow dtRow2= DataSetB.Tables[0].Rows[i];
dtRow1["Zsz"] = dtRow1["Zsz"] + dtRow2["Zsz"]
}
DataSetA.Tables[0]和DataSetB.Tables[0]中数据的物理位置不同,这样的赋值是错的。
解决思路2:
1) 遍历DataSetA.Tables[0]的数据
2)遍历DataSetB.Tables[0]中数据,当 DataSetB.Tables[0]中数据的关键字等于DataSetA.Tables[0]的数据的关键字时,赋值。
这个方法从结果上是对的,但是效率太低。
解决思路3:
1)取出DataSetA.Tables[0]的默认视图DefaultView;取出DataSetB.Tables[0]的默认视图DefaultView;
2) 设置两个视图的排序关键字为Zsort
3)遍历DataSetA.Tables[0]的默认视图DefaultView的数据;
DataRow dtRow1= DataSetA.Tables[0].DefaultView[j].Row;
dtRow1["Zsz"] = DataSetA.Tables[0].DefaultView[j]["Zsz"] + DataSetB.Tables[0].DefaultView[j]["Zsz"]
这种方法解决了解决思路2的效率低的问题。
如DataSetA中表A的数据为 DataSetB中表B的数据为
Zsort Zdhz Zsz Zsort Zdhz Zsz
1 资产部类总计 1000 11 资产类合计 0
11 资产类合计 500 1101 存款 0
1101 存款 500 1 资产部类总计 0
如何把DataSetA的A表中资产部类总计数据赋值到DataSet的B的表中的资产部类总计数据、资产部类合计数据赋值到DataSet的B的表中的资产部类合计数据、。。。。。。
解决思路1:
假如直接(for int i =0;i<DataSetA.Tables[0].Count;i++)
{
DataRow dtRow1= DataSetA.Tables[0].Rows[i];
DataRow dtRow2= DataSetB.Tables[0].Rows[i];
dtRow1["Zsz"] = dtRow1["Zsz"] + dtRow2["Zsz"]
}
DataSetA.Tables[0]和DataSetB.Tables[0]中数据的物理位置不同,这样的赋值是错的。
解决思路2:
1) 遍历DataSetA.Tables[0]的数据
2)遍历DataSetB.Tables[0]中数据,当 DataSetB.Tables[0]中数据的关键字等于DataSetA.Tables[0]的数据的关键字时,赋值。
这个方法从结果上是对的,但是效率太低。
解决思路3:
1)取出DataSetA.Tables[0]的默认视图DefaultView;取出DataSetB.Tables[0]的默认视图DefaultView;
2) 设置两个视图的排序关键字为Zsort
3)遍历DataSetA.Tables[0]的默认视图DefaultView的数据;
DataRow dtRow1= DataSetA.Tables[0].DefaultView[j].Row;
dtRow1["Zsz"] = DataSetA.Tables[0].DefaultView[j]["Zsz"] + DataSetB.Tables[0].DefaultView[j]["Zsz"]
这种方法解决了解决思路2的效率低的问题。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-11-27
展开全部
要复制DataTable数据结构。才能添加
追问
具体点 谢谢
追答
Clone克隆。也可以自定义一个datatable。然后 select 查询。最后循环添加
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
简单的方法是通过DataSet
追问
so?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询