我有兩個表,如DTTable1和DTTable2。它有以下記錄。使用C#比較和刪除數據錶行:
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
在這裏,我想這兩個表進行比較。如果DTTable1記錄存在於DTTable2中(僅考慮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 Loop,它也沒有給出預期的結果。
使用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();
但有時,第二行不從表中刪除。我得到最終的數據表爲
ItemID Specification Amount
--------- --------------- ---------
1 B 20
2 A 10
2 B 20
3 A 10
3 B 20
如何解決這個問題?什麼是最簡單的方法來做到這一點?
你是從數據庫中選擇這些記錄,如果是的話,我可以幫你將只選擇所需的記錄,因爲它查詢更高效地完成sql –