现在有2个数据库A和B,A中表Ta,字段有StudentID,StudentName,B中表Tb,字段和Ta中一样。
现在将2个表都放入DataTable中,然后比较。
Tb中有的数据,Ta中都有
现在要把Tb中有的数据从Ta中删除,然后保存到Ta中现在我已经将数据读取出来放入了DataTable中
就是不知道怎么比较,然后删除~该怎么做?请高手给出具体代码,谢谢!

解决方案 »

  1.   

    一个例子,tab相当于 Ta,tab1 相当于 Tb
        
          // create tab
                 
                System.Data.DataTable tab = new DataTable("table");
                DataColumn d = new DataColumn("A");
                DataColumn d1 = new DataColumn("AA");
                tab.Columns.Add(d);
                tab.Columns.Add(d1);
                DataRow r1 = tab.NewRow();
                r1[0] = 1;            r1[1] = "a1";
                DataRow r2 = tab.NewRow();
                r2[0] = 2;
                r2[1] = "b1";
                DataRow r3 = tab.NewRow();
                r3[0] = 3;
                r3[1] = "c";
                DataRow r4 = tab.NewRow();
                r4[0] = 4;
                r4[1] = "1";
                DataRow r5 = tab.NewRow();
                r5[0] = 5;
                r5[1] = "ee";
                tab.Rows.Add(r1);
                tab.Rows.Add(r2);
                tab.Rows.Add(r3);
                tab.Rows.Add(r4);
                tab.Rows.Add(r5);            //create tab1            System.Data.DataTable tab1 = new DataTable("table");
                DataColumn d12 = new DataColumn("A");
                DataColumn d122 = new DataColumn("AA");
                tab1.Columns.Add(d12);
                tab1.Columns.Add(d122);
                DataRow r11 = tab1.NewRow();
                r11[0] = 1;            r11[1] = "a";
                DataRow r21 = tab1.NewRow();
                r21[0] = 2;
                r21[1] = "b";
                DataRow r31 = tab1.NewRow();
                r31[0] = 3;
                r31[1] = "c";
              
                tab1.Rows.Add(r11);
                tab1.Rows.Add(r21);
                tab1.Rows.Add(r31);
                //            List<string> s1 = new List<string>();
                List<string> s2 = new List<string>();
        
                //compare each row data
                foreach (DataRow r in tab1.Rows)
                {
                    if (tab.Select("A='" + r[0].ToString() + "'" + " AND AA='" + r[1].ToString() + "'").Length > 0)
                    {
                        s1.Add(r[0].ToString());
                        s2.Add(r[1].ToString());
                    }
                }
                //delete data from tab,            for (int i = 0; i < s1.Count; i++)
                {
                    int j = 0;
                    for (; j < tab.Rows.Count;)
                    {
                        DataRow r = tab.Rows[j];
                        if (r[0].ToString() == s1[i].ToString() && r[1].ToString() == s2[i].ToString())
                        {
                            tab.Rows.Remove(r);
                            j = 0;
                        }
                        else { j++; }
                        
                    }
                }
      

  2.   


    你需要写的代码是:             List <string> s1 = new List <string>(); 
                List <string> s2 = new List <string>(); 
        
                //compare each row data 
                foreach (DataRow r in tab1.Rows) 
                { 
                    if (tab.Select("A='" + r[0].ToString() + "'" + " AND AA='" + r[1].ToString() + "'").Length > 0) 
                    { 
                        s1.Add(r[0].ToString()); 
                        s2.Add(r[1].ToString()); 
                    } 
                } 
                //delete data from tab, 
                int count = s1.Count>=s2.Count ? s1.Count : s2.Count;  //
                // count 变量能防止某一个list里面没有数据,就是对应的数据库字段值为null

                for (int i = 0; i < count ; i++) //
                { 
                    int j = 0; 
                    for (; j < tab.Rows.Count;) 
                    { 
                        DataRow r = tab.Rows[j]; 
                        if (r[0].ToString() == s1[i].ToString() && r[1].ToString() == s2[i].ToString()) 
                        { 
                            tab.Rows.Remove(r); 
                            j = 0; 
                        } 
                        else { j++; } 
                        
                    } 
                }
      

  3.   

    把两个DataTable放到一个DataSet中,用DataView.Delete()操作。