我现在DataSet有两个表,我想把表Table1更新到Table2,
  Table1         Table2                      Table2(更新后)
 ID  Name      ID     Name              ID   Name
  1   张三      1      张三              1   张三
  2   李四      2      李五              2   李四
  3   王五      4      赵六              3   王五
                                         4   赵六
但是我用Merge()方法合并得到的是,这和我想要的完全不一样,有谁能帮我解决这个问题呀,谢谢!!
Table2
ID     Name
1      张三 
2      李五  
4      赵六 
1      张三   
2      李四
3      王五

解决方案 »

  1.   

    用Merge(dsnew, True, MissingSchemaAction.Add or Ignore)方法可以合并,但当Table2的字段"ID"是主键时就不允许有相同的值。
    所以一般用Merge(dsnew, True, MissingSchemaAction.Ignore)你不如考虑用遍历Table1.Rows的方法来向Table2添加数据行。
      

  2.   

    datatable 的import方法也可以的
      

  3.   

    用遍历Table1.Rows的方法来向Table2添加数据行
      

  4.   

    还是先判断是否存在然后再用ImportRow方法导进去,效率也挺高
      

  5.   

    不如遍历table1中的DataRow,
    将table2中不存在的行添加到table2中就好了
      

  6.   

    一个遍历table的例子。                          
    DataTable dt1=new DataTable();
    dt1.Columns.Add("ID");
    dt1.Columns.Add("Name");
    DataTable dt2=new DataTable();
    dt2.Columns.Add("ID");
    dt2.Columns.Add("Name");
    for(int i=0;i<5;i++)
    {
                    DataRow dr=dt1.NewRow() ;
    dr["ID"]=1;
    dr["Name"]="name1";
    dt1.Rows.Add(dr);
    }
    for(int i=0;i<5;i++)
    {
                    DataRow dr=dt2.NewRow() ;
    dr["ID"]=2;
    dr["Name"]="name2";
    dt2.Rows.Add(dr);
    }
    for(int i=0;i<dt2.Rows.Count;i++)
    {
    string str1="ID=" + dt2.Rows[i]["ID"].ToString()+"and Name='"+dt2.Rows[i]["Name"].ToString()+"'";
    string str2="ID DESC";
    DataRow[] Arows=dt1.Select(str1,str2);
    if(Arows.Length==0)
    {
                         DataRow dr=dt1.NewRow() ;
                         dr["ID"]=dt2.Rows[i]["ID"];
    dr["Name"]=dt2.Rows[i]["Name"].ToString();
    dt1.Rows.Add(dr);
    }
    }
    string str="";
    for (int i=0;i<dt1.Rows.Count ;i++)
    {
    str+=dt1.Rows[i]["ID"].ToString()+dt1.Rows[i]["Name"].ToString();
    }
    MessageBox.Show(str);