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