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