我有两个表,例如 DTTable1 和 DTTable2。它有以下记录。
DTTable1:
ItemID Specification Amount
--------- --------------- ---------
1 A 10
1 B 20
1 C 30
DTTable1:
ItemID Specification Amount
--------- --------------- ---------
1 A 10
1 B 20
1 C 30
2 A 10
2 B 20
3 A 10
3 B 20
在这里,我想比较这两个表。如果 DTTable2 中存在 DTTable1 记录(仅考虑 ItemID),则删除 ItemID 与 DTTable1 相同的相应行。
我试过foreach和forloop。使用 ForEach:
foreach (DataRow DR in DTTable2.Rows)
{
if (DR["ItemID"].ToString() == DTTable1.Rows[0]["ItemID"].ToString())
{
DTTable2.Rows.Remove(DR);
}
}
DTTable2.AcceptChanges();
它显示错误,“集合已修改;枚举操作可能无法执行”。所以我使用了 For 循环,它也没有给出想要的结果。
使用 For 循环:
for (int i = 0; i < DTTable2.Rows.Count; i++)
{
if (DTTable2.Rows[i]["ItemID"].ToString() == DTTable1.Rows[0]["ItemID"].ToString())
{
DTTable2.Rows.RemoveAt(i);
}
}
DTTable2.AcceptChanges();
但有时,第二行不会从表中删除。我得到最终的 DataTable 为
ItemID Specification Amount
--------- --------------- ---------
1 B 20
2 A 10
2 B 20
3 A 10
3 B 20
如何解决这个问题?最简单的方法是什么?