【发布时间】:2012-10-10 05:29:23
【问题描述】:
我有两个表,例如 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
如何解决这个问题?最简单的方法是什么?
【问题讨论】:
-
您是否从数据库中选择这些记录,如果是,我可以帮助您进行查询,该查询将仅选择所需的记录,因为使用 sql 完成它的效率要高得多
标签: c# asp.net visual-studio-2010 linq datatable