有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的效率低的问题。