dominicwong
asked on
How to find a deleted row from two DataTables in C#
I have two DataTables as follows.
The 3rd row is removed from the Table 1.
I would like to do a diff of the two tables, and get an answer to tell me that the row had been deleted.
I tried with the following code but it doesn't work. The result it gave me was 11 rows unchanged.
Any idea please. Thanks.
Key1 Key2 Key3 Key4 Key5 Key6 Key7
2063620735 2107319875 1418390997 270727583 270727583 652640566 369246503
1630856750 515371590 416266794 2014872019 2014872019 532186611 504554590
971040548 2107319875 1418390997 1037345008 1037345008 652640566 369246503 <-- Deleted
1604012077 2107319875 416266794 2014872019 2014872019 532186611 369246503
1604012077 515371590 1418390997 270727583 1037345008 652640566 369246503
2063620735 515371590 416266794 421288522 2014872019 532186611 369246503
Table2
Key1 Key2 Key3 Key4 Key5 Key6 Key7
2063620735 2107319875 1418390997 270727583 270727583 652640566 369246503
1630856750 515371590 416266794 2014872019 2014872019 532186611 504554590
1604012077 2107319875 416266794 2014872019 2014872019 532186611 369246503
1604012077 515371590 1418390997 270727583 1037345008 652640566 369246503
2063620735 515371590 416266794 421288522 2014872019 532186611 369246503
The 3rd row is removed from the Table 1.
I would like to do a diff of the two tables, and get an answer to tell me that the row had been deleted.
I tried with the following code but it doesn't work. The result it gave me was 11 rows unchanged.
Any idea please. Thanks.
table1.AcceptChanges();
table2.AcceptChanges();
table1.Merge(table2, true);
if(added != null)
Debug.WriteLine("added = " + added.Rows.Count);
if (deleted != null)
Debug.WriteLine("deleted = " + deleted.Rows.Count);
if (detached != null)
Debug.WriteLine("detached = " + detached.Rows.Count);
if (modified != null)
Debug.WriteLine("modified = " + modified.Rows.Count);
if (unchanged != null)
Debug.WriteLine("unchanged = " + unchanged.Rows.Count);
Table1Key1 Key2 Key3 Key4 Key5 Key6 Key7
2063620735 2107319875 1418390997 270727583 270727583 652640566 369246503
1630856750 515371590 416266794 2014872019 2014872019 532186611 504554590
971040548 2107319875 1418390997 1037345008 1037345008 652640566 369246503 <-- Deleted
1604012077 2107319875 416266794 2014872019 2014872019 532186611 369246503
1604012077 515371590 1418390997 270727583 1037345008 652640566 369246503
2063620735 515371590 416266794 421288522 2014872019 532186611 369246503
Table2
Key1 Key2 Key3 Key4 Key5 Key6 Key7
2063620735 2107319875 1418390997 270727583 270727583 652640566 369246503
1630856750 515371590 416266794 2014872019 2014872019 532186611 504554590
1604012077 2107319875 416266794 2014872019 2014872019 532186611 369246503
1604012077 515371590 1418390997 270727583 1037345008 652640566 369246503
2063620735 515371590 416266794 421288522 2014872019 532186611 369246503
SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Thanks Naitik. It works.
No comment has been added to this question in more than 21 days, so it is now classified as abandoned.
I have recommended this question be closed as follows:
Split:
-- Naitik Gamit (https:#a42081170)
-- Naitik Gamit (https:#a42079571)
If you feel this question should be closed differently, post an objection and the moderators will review all objections and close it as they feel fit. If no one objects, this question will be closed automatically the way described above.
frankhelk
Experts-Exchange Cleanup Volunteer
I have recommended this question be closed as follows:
Split:
-- Naitik Gamit (https:#a42081170)
-- Naitik Gamit (https:#a42079571)
If you feel this question should be closed differently, post an objection and the moderators will review all objections and close it as they feel fit. If no one objects, this question will be closed automatically the way described above.
frankhelk
Experts-Exchange Cleanup Volunteer
ASKER
As to your suggestion to find the the "removed_keys" by using only "key1", could I make use of all the columns in the table?
My example might be a bad one. For example, I might not know in advance which key is different.
Also I would like to be able to tell whether the 2nd table had added, deleted, modified, etc rows.